2008-12-08 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / mini / ChangeLog
1 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * basic-simd.cs: Fix method names for Vector2l.
4
5 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6
7         * basic-simd.cs: Fix method names for Vector2d.
8
9 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
10
11         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
12         that are extension methods.
13
14 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
15
16         * basic-simd.cs: Fix method names for Vector4f.
17
18 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
19
20         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
21         as such. Fixes #456669.
22
23 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
24
25         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
26         
27 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
28
29         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
30         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
31         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
32         (mips_adjust_stackframe): handle FP spills
33                 
34         * mini-ops.h: add mips_mtc1_s2
35         
36         * cpu-mips.md: add mips_mtc1_s2
37         
38 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
39
40         * unwind.c: New file, move the unwind info encoding functions here from
41         aot-compiler.c, so they could be used at runtime too.
42
43 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
44
45         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
46         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
47         
48 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
49
50         * mini-mips.c: cleanup warnings
51         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
52         (mips_adjust_stackframe): handle case of taking the address of stack locals
53         
54 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
55
56         * aot-compiler.c: Implement a few functions missing from the asm writer.
57         (emit_method_code): Only write symbols for methods when using the bin
58         writer, since the assembler can't deal with the characters in our method
59         names.
60
61         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
62
63         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
64         call.
65
66         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
67         a bit to also restore %rax.
68
69 2008-12-05  Mark Probst  <mark.probst@gmail.com>
70
71         * mini-ppc.c: Some simple merges from mini-ppc64.c.
72
73 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
74
75         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
76         arguments.
77
78 2008-12-05  Mark Probst  <mark.probst@gmail.com>
79
80         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
81
82         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
83         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
84
85         * exceptions-ppc64.c: Removed.
86
87         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
88
89 2008-12-05  Mark Probst  <mark.probst@gmail.com>
90
91         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
92         tramp-ppc64.c.
93
94         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
95
96         * tramp-ppc64.c: Removed.
97
98 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
99
100         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
101         the TYPESPEC table.
102
103 2008-12-05  Mark Probst  <mark.probst@gmail.com>
104
105         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
106
107         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
108         mini-ppc.h instead of mini-ppc64.h.
109
110         * mini-ppc64.h: Removed.
111
112 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
113
114         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
115         
116         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
117         
118 2008-12-05  Mark Probst  <mark.probst@gmail.com>
119
120         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
121         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
122         code easier.
123
124 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
125
126         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
127
128 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
129
130         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
131
132 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
133
134         * basic-simd.cs: Tests for operator == and != on Vector4f.
135
136 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
137
138         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
139
140         * simd-intrinsics.c: Kill useless enum.
141
142 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
143
144         * cpu-mips.md: add long_conv_to_ovf_i4_2
145         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
146
147 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
148
149         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
150         
151         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
152
153 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
154
155         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
156         
157 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
158
159         * basic-simd.cs: Add tests for new methods.
160
161 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
162
163         * simd-intrinsics.c: Add support for operator == and !=
164         on Vector4(u)i.
165
166         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
167
168 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
169
170         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
171
172 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
173
174         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
175
176         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
177         MONO_PATCH_INFO_ICALL_ADDR.
178
179         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
180
181         * aot-compiler.c: Resurrect full-aot support.
182
183 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
184
185         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
186         
187 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
188
189         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
190         
191 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
192
193         * basic-simd.cs: Fix tests to work under ppc.
194         Remove tests for methods that will be removed.
195
196 2008-12-03  Mark Probst  <mark.probst@gmail.com>
197
198         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
199         generic type (via a typedef or typeref) correctly.
200
201 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
202
203         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
204         diagnose an assertion failure.
205
206 2008-12-02  Mark Probst  <mark.probst@gmail.com>
207
208         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
209         Fix trampoline size.
210
211         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
212         conversion opcodes are implemented natively instead via emulation.
213
214 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
215
216         * cpu-mips.md: remove mips_xori
217
218         * mini-ops.h:  remove mips_xori
219
220         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
221
222         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
223         
224         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
225         
226 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
227
228         * cpu-mips.md: fix instruction lengths.
229
230         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
231
232         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
233
234         * mini-ops.h: fix slti / sltiu op profiles.
235         
236 2008-12-02  Martin Baulig  <martin@ximian.com>
237
238         * method-to-ir.c (mono_method_to_ir): Disable debugging
239         information for the init locals block to make the debugger stop
240         after all locals have been initalized.
241
242 2008-12-02  Martin Baulig  <martin@ximian.com>
243
244         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
245         running inside the debugger.
246
247 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
248
249         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
250         is enabled.
251
252         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
253         alu->alu imm optimization which only shows if deadce is disabled.
254
255         * aot-compiler.c: Rename the function names for the binary and asm writers
256         so they can coexist in the same process. Rework the xdebug code to use the
257         asm writer. This avoids the need to call into the runtime to dump the
258         debugging info. Add more debugging info for types.
259
260         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
261
262         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
263         cpu description tables, they can't occur in cpu-<ARCH>.md.
264
265         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
266         the stack in CEE_LDFLDA. Fixes #450542.
267
268         * generics.cs: Add a new test.
269
270 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
271
272         * mini-ops.h: updated MIPS opcodes
273         * mini-mips.c: decompose long opts
274         * mini-mips.h: decompose long opts
275         
276 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
277
278         * cpu-mips.md: fix length on int_rem_un
279         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
280         
281 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
282
283         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
284
285         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
286
287 2008-11-29  Martin Baulig  <martin@ximian.com>
288
289         * mini-exceptions.c (mono_handle_native_sigsegv): Check
290         mono_debug_using_mono_debugger() in addition to the
291         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
292
293 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
294
295         * mini-ops.h: updated more MIPS opcodes
296         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
297         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
298         
299 2008-11-28  Mark Probst  <mark.probst@gmail.com>
300
301         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
302
303 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
304
305         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
306         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
307         * mini-ops.h: correct selected mips opcode entries
308         
309 2008-11-28  Mark Probst  <mark.probst@gmail.com>
310
311         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
312         make them work.
313
314 2008-11-28  Mark Probst  <mark.probst@gmail.com>
315
316         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
317
318 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
319
320         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
321         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
322         * mini-mips.h: disable IMT
323         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
324         
325 2008-11-28  Mark Probst  <mark.probst@gmail.com>
326
327         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
328
329 2008-11-28  Mark Probst  <mark.probst@gmail.com>
330
331         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
332
333 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
334
335         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
336         consistency.
337
338 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
339
340         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
341         for Set/GetVector aligned versions.
342
343 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
344
345         * basic-simd.cs: Add tests for Get/SetVector.
346
347 2008-11-27  Mark Probst  <mark.probst@gmail.com>
348
349         * mini.c: Removed g_slist_append_mempool().  Now in
350         metadata/mempool.c.
351
352 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
353
354         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
355         size properly and make the bounds check optional.
356
357         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
358         for SetVector and IsAligned.
359
360 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
361
362         * mini.c: Remove unused mono_normalize_opcodes () function.
363
364 2008-11-26  Mark Probst  <mark.probst@gmail.com>
365
366         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
367         using the new atomic add ops now.
368
369         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
370         add.
371
372 2008-11-26  Mark Probst  <mark.probst@gmail.com>
373
374         * mini-ppc64.c: Several fixes.
375
376 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
377
378         * cpu-mips.md: added jump_table
379         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
380
381 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
382
383         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
384
385 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
386
387         * mini-ops.h: corrected a handful of MIPS opcodes.
388
389 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
390
391         * aot-compiler.c: MIPS to use ELF writer
392
393 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
394
395         * mini-codegen.c: remove MIPS specific assert.
396
397 2008-11-25  Mark Probst  <mark.probst@gmail.com>
398
399         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
400         fixes.  PPC64 now passes most of the runtime regressions.
401
402 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
403
404         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
405         volatile intervals a bit.
406
407 2008-11-24  Mark Probst  <mark.probst@gmail.com>
408
409         * basic-long.cs: New test case.
410
411 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
412
413         * mini.c (mini_method_compile): Disable globalra for large methods for 
414         now.
415
416         * regalloc2.c (order_moves): Add fp support.
417
418         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
419         source bblock ends with an OP_BR_REG.
420
421         * ratests.cs: Add a new test.
422
423 2008-11-23  Mark Probst  <mark.probst@gmail.com>
424
425         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
426         sharing.  PPC64 now passes generics.exe.
427
428 2008-11-23  Mark Probst  <mark.probst@gmail.com>
429
430         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
431
432 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
433
434         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
435         memory when mono_jit_info_table_find () can't find the method in the
436         LMF case.
437
438         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
439         AOTed code too.
440         
441         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
442         writer too.
443
444 2008-11-23  Mark Probst  <mark.probst@gmail.com>
445
446         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
447         Several fixes.  PPC64 now runs exceptions.exe and
448         devirtualization.exe.
449
450 2008-11-22  Mark Probst  <mark.probst@gmail.com>
451
452         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
453         arrays.exe and basic-math.exe.
454
455 2008-11-22  Mark Probst  <mark.probst@gmail.com>
456
457         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
458         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
459
460 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
461
462         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
463
464 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
465
466         * method-to-ir.c: Move bounds checking macros to ir-emit.h
467
468         * ir-emit.h: Move macros from method-to-ir.c to here.
469
470 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
471
472         * mini-ops.h: Correct the long simd ops to use LREG.
473
474 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
475
476         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
477         
478         * mini-ops.h: Correct the dreg type of a few long opcodes.
479
480         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
481         Add netbsd support.
482
483 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
484
485         * mini-ppc.c: remove negative stack references in epilog
486         for platforms that don't support the red zone.
487
488 2008-11-21  Mark Probst  <mark.probst@gmail.com>
489
490         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
491         point regs.  Now PPC64 passes basic-calls.exe.
492
493 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
494
495         * basic-simd.cs: Add tests for accessors of Vector2l.
496
497 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
498
499         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
500
501         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
502         
503         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
504
505 2008-11-21  Mark Probst  <mark.probst@gmail.com>
506
507         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
508         PPC64 passes basic-long.exe.
509
510 2008-11-20  Mark Probst  <mark.probst@gmail.com>
511
512         * decompose.c: Decompose carry and overflow add on PPC64 like on
513         other 64 bit archs.  Don't decompose sub at all on PPC64.
514
515         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
516         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
517         basic-long.exe.
518
519 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
520
521         * basic-simd.cs: Add tests for accessors of Vector2d.
522
523 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
524
525         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
526
527         * cpu-x86.md: Same.
528
529         * mini-x86.c (mono_arch_output_basic_block): Same.
530         
531         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
532
533 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
534
535         * basic-simd.cs: Add tests for accessors of Vector4f.
536
537 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
538
539         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
540
541         * cpu-x86.md: Same.
542
543         * mini-x86.c (mono_arch_output_basic_block): Same.
544         
545         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
546
547 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
548
549         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
550
551 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
552
553         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
554
555         * cpu-x86.md: Same.
556
557         * mini-x86.c (mono_arch_output_basic_block): Same.
558         
559         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
560
561 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
562
563         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
564
565 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
566
567         * simd-intrinsics.c: Enable setters for Vector16sb.
568
569 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
570
571         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
572
573         * cpu-x86.md: Same.
574
575         * mini-x86.c (mono_arch_output_basic_block): Same.
576         
577         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
578
579 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
580
581         * simd-intrinsics.c: Implement setter for Vector8us.
582
583 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
584
585         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
586         for dead variables.
587
588 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
589
590         * mini-ppc.c: remove references to the red zone in the prolog
591         (for systems that don't support it).
592
593 2008-11-19  Mark Probst  <mark.probst@gmail.com>
594
595         * cpu-ppc64.md: Fixed a few instruction lengths.
596
597         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
598         now.
599
600 2008-11-19  Mark Probst  <mark.probst@gmail.com>
601
602         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
603         basic.exe now.
604
605 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
606
607         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
608
609 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
610
611         * mini-ops.h: Added OP_INSERT_I2.
612
613         * cpu-x86.md: Same.
614
615         * mini-x86.c (mono_arch_output_basic_block): Same.
616         
617         * simd-intrinsics.c: Implement setter for Vector8s.
618
619         * simd-methods.h: Add the names of get setters of Vector8s.
620
621 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
622
623         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
624         
625         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
626         parameters.
627
628         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
629
630 2008-11-18  Mark Probst  <mark.probst@gmail.com>
631
632         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
633         for PPC64.  An empty program runs now.
634
635 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
636
637         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
638
639         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
640         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
641         info for JITted code is emitted into a shared library, loadable into gdb.
642
643 2008-11-18  Mark Probst  <mark.probst@gmail.com>
644
645         * Makefile.am: Changes to build PPC64.
646
647         * mini-arch.h: Include mini-ppc64.h on PPC64.
648
649 2008-11-18  Mark Probst  <mark.probst@gmail.com>
650
651         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
652         in PPC code up to r119147.
653
654 2008-11-18  Mark Probst  <mark.probst@gmail.com>
655
656         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
657         cpu-ppc64.md: Changes for PPC64.
658
659         Based on code submitted by andreas.faerber@web.de at
660         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
661         X11/MIT license.
662
663 2008-11-18  Mark Probst  <mark.probst@gmail.com>
664
665         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
666         cpu-ppc64.md: Copied from the corresponding PPC files from
667         r118846.
668
669 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
670
671         * mini-ops.h: Added OP_ROUND.
672
673         * cpu-x86.md: Added round.
674
675         * mini-x86.c: Added support for intrinsicing Math.Round (double).
676
677         * basic-math.cs: Added test_0_round to test rounding.
678
679         Contributed under MIT/X11 license.
680
681 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
682
683         * aot-compiler.c : Fix the Winx64 build.
684
685         Contributed under MIT/X11 license.
686
687 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
688
689         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
690         in OP_EXTRACT_R8 to avoid possible stack corruption.
691
692 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
693
694         * mini-ops.h: Added OP_EXTRACT_R8/I8.
695
696         * cpu-x86.md: Added extract_r8.
697
698         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
699         
700         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
701         a couple of OP_EXTRACT_I4.
702
703         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
704
705         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
706
707 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
708
709         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
710         and not 4.1. 
711
712 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
713
714         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
715         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
716
717         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
718         are not needed any more.
719
720         * mini.h: Remove the unused INS_LIST macros.
721
722         * mini.c (mini_method_compile): Remove a disable globalra case which is no
723         longer needed.
724
725         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
726         ir-emit.h.
727
728         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
729         mono_alloc_ireg () instead.
730
731         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
732         macros.
733
734         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
735         on amd64.
736
737         * aot-runtime.c (load_aot_module): Disable AOT when running under
738         CAS.
739
740         * mini-amd64.h: Change the monitor fastpath defines to check for
741         !PLATFORM_WIN32 so they work on *bsd too.
742
743         * mini.h mini.c mini-hhpa.c: Remove more unused code.
744
745         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
746
747         * mini.h (MonoCompile): Remove new_ir flag.
748
749         * regalloc.h regalloc.c: Remove unused code.
750
751         * cpu-*.md: Remove more unused opcodes.
752
753         * simple-cee-ops.h simple-mini-ops.h: Removed.
754
755         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
756         
757 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
758
759         * aliasing.h: Removed.
760
761         * *.c: Remove references to aliasing.h and inssel.h.
762
763         * mini.c: Remove additional unused functions.
764
765         * mini-ops.h cpu-*.md: Remove unused opcodes.
766
767 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
768
769         Remove the old JIT code.
770
771         * inssel*.brg: Removed.
772
773         * ssa.c abcremoval.c aliasing.c: Removed.
774
775         * ssa2.c: Renamed to ssa.c.
776
777         * abcremoval2.c: Renamed to abcremoval.c.
778
779         * *.c: Removed all !cfg->new_ir code.
780
781         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
782         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
783
784         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
785         
786 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
787
788         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
789         to simplify the code and cut back on the number of global symbols in the AOT
790         file.
791         
792         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
793
794 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
795
796         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
797         with the got/got_info tables.
798
799         * mini.h: Bump AOT file format version.
800         
801         * unwind.h: New file, contains definitions for stack unwinding.
802
803         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
804         to cfg->unwind_ops.
805         
806         * aot-compiler.c: Generalize the emitting of unwind information to use the
807         information in cfg->unwind_ops.
808
809         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
810
811         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
812         AOT method frames. Enable writing symbols for methods by default.
813
814 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
815
816         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
817         and make it work with vectors of element sizes 1, 2 and 4.
818
819         * simd-intrinsics.c: Enable getter for all vectors with element size
820         1, 2 or 4.
821
822         * simd-methods.h: Add the names of other getters.
823
824         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
825
826         * cpu-x86.md: Same.
827
828         * mini-x86.c: Same.
829
830 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
831
832         * mini-ppc.h: portability fix.
833
834 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
835
836         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
837         buggy and will overwrite it.
838
839 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
840
841         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
842         Use it to emit local symbols for all methods so AOTed methods show up with
843         their full name in gdb/valgrind output.
844
845 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
846
847         * mini-ppc.c: portability fixes.
848
849 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
850
851         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
852         entries out of the if (!generic_shared...) code so it is always done.
853         (mono_class_init_trampoline): Do the patching when running under valgrind
854         too, newer versions of valgrind have no problems with it.
855
856 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
857
858         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
859         further sections.
860
861 2008-11-13  Mark Probst  <mark.probst@gmail.com>
862
863         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
864         filters.
865
866 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
867
868         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
869
870 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
871
872         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
873
874         * cpu-x86.md: Same.
875
876         * mini-x86.c: Same.
877
878         * simd-intrinsics.c: Same.
879
880 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
881
882         * simd-intrinsics.c: Enable constructor intrinsics for all types.
883
884 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
885
886         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
887         to work with more Vector types.
888
889 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
890
891         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
892         store the elemens directly instead of using and intermediate.
893
894 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
895
896         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
897
898         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
899         to preserve %eax for aot plt trampolines.
900
901         * aot-compiler.c (compile_method): Don't skip synchronized methods.
902         (encode_method_ref): Flag synchronized methods so they won't go through
903         the AOT trampoline.
904
905         * aot-compiler.c: Additional work to support AOTing synchronized methods/
906         wrappers.
907
908         * cpu-ia64.md (jmp): Increase max length.
909
910 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
911
912         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
913         open generic classes.
914
915         * aot-compiler.c: Enable the ELF writer on ELF platforms.
916
917         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
918         box+brtrue optimization since it causes test failures on x86.
919
920 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
921
922         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
923
924         * cpu-x86.md: Same.
925
926         * mini-x86.c: Same.
927
928         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
929         for simd ctor values. 
930
931         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
932         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
933
934 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
935
936         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
937         LogicalRightShift.
938
939         * simd-instrincs.c: Same.
940
941         * basic-simd.cs: Same.
942
943 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
944
945         * ratests.cs: Add more tests.
946
947         * regalloc2.c (add_spill_code): Handle more corner cases.
948
949 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
950
951         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
952         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
953         both the source an destination of an instruction.
954
955 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
956
957         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
958         wapihandles.c: more portability changes.
959
960 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
961
962         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
963         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
964         safe to execute in a signal handler and the kernel provides better
965         the info in /proc/self/smaps. Avoid the assert on sigaction during
966         cleanup.
967
968 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
969
970         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
971         do the bblock linking hack if it is actually needed.
972
973         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
974         up linking.
975
976         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
977         crash problem is fixed.
978
979         * branch-opts.c (mono_remove_critical_edges): Link up newly added
980         bblocks.
981
982         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
983         for catch clauses.
984         (mini_method_compile): Set the starting value of next_vreg to 
985         MAX_IREGS + MAX_FREGS when using globalra.
986
987         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
988         filter clauses with BB_EXCEPTION_HANDLER.
989
990         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
991
992 2008-11-10  Mark Probst  <mark.probst@gmail.com>
993
994         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
995         space for stdcall.  Fixes regressions on Win32.
996
997 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
998
999         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
1000         bblocks.
1001         (linear_scan): Remove an assert which doesn't seem to be needed.
1002
1003         * local-propagation.c (mono_local_deadce): Avoid a call to
1004         MONO_DELETE_INS which would screw up the instruction linking.
1005
1006         * mini.c (mono_decompose_op_imm): Make this work with globalra.
1007
1008         * regalloc2.c: Upgrade to work the current JIT code.
1009
1010 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
1011
1012         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
1013         case.
1014
1015         * aot-runtime.c: Remove some dead code.
1016
1017         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
1018         consistency.
1019         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
1020
1021         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
1022         trampolines using sscanf since atoi doesn't work on large unsigned values.
1023
1024         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
1025         Initialize code_size.
1026
1027 2008-11-08  Mark Probst  <mark.probst@gmail.com>
1028
1029         * method-to-ir.c (mini_emit_inst_for_method): Make
1030         Interlocked.CompareExchange work for Int arguments on 32 bit
1031         archs, as well.
1032
1033 2008-11-07  Mark Probst  <mark.probst@gmail.com>
1034
1035         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
1036
1037 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
1038
1039         * main.c Fix MSVC build.
1040
1041         Contributed under MIT/X11 license.
1042
1043 2008-11-06  Mark Probst  <mark.probst@gmail.com>
1044
1045         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
1046         alignment larger than 8 bytes are aligned correctly, too.
1047
1048         * mini.c: Honor the min_align field of MonoClass when laying out
1049         the stack.
1050
1051 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
1052
1053         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
1054
1055         * aot-compiler.c (emit_plt): Fix a warning.
1056         
1057         * aot-compiler.c: Implement ARM support in the binary writer.
1058
1059 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1060
1061         * basic-simd.cs: Add test for getter with byref arg.
1062         Fix the naming of a few tests.
1063         Add missing checks to a test.
1064
1065 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
1066
1067         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
1068
1069         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
1070         most of the full-aot support for monitor enter/exit trampolines.
1071
1072         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
1073         enter/exit trampoline creation functions.
1074
1075         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
1076         make dist.
1077
1078 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
1079
1080         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
1081         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
1082         implement the needed functionality without adding crap to the runtime.
1083
1084 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
1085
1086         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
1087         non-x86 builds.
1088
1089         * mini.c (mono_build_date): New global version holding the build date in
1090         string format.
1091         
1092         * Makefile.am (buildver.c): Generate a file containing the build date.
1093
1094         * main.c: Set the build date from the generated file.
1095
1096         * mini.c (mono_get_runtime_build_info): New helper function returning build
1097         information in a string format.
1098         
1099         * driver.c (mono_main): Print the build date in --version.
1100
1101         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
1102         file when the bind-to-runtime-version option is used.
1103
1104 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1105
1106         * simd-intrinsics.c: Fix bug when using getters and byref args. 
1107
1108 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1109
1110         * simd-methods.h: Rename prefetch methods.
1111
1112         * simd-intrinsics.c: Same.      
1113
1114 2008-11-05  Mark Probst  <mark.probst@gmail.com>
1115
1116         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
1117         sizes.
1118
1119 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1120
1121         * aot-compiler.c: Use the bundled elf header files instead of depending on
1122         the system one.
1123         
1124         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
1125         mempool.
1126
1127         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
1128         on every call.
1129
1130 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
1131
1132         * cpu-x86.md: Add store nta ops.
1133
1134         * mini-ops.h: Same.
1135
1136         * mini-x86.c: Same.
1137
1138         * mini.h: Add an enum for simd prefetch modes.
1139
1140         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
1141         of store. Use the changed code to support store nta.
1142
1143         * simd-intrinsics.c: Add prefetch ops for all vector types.
1144
1145 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1146
1147         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
1148         threads.
1149         
1150         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
1151         names.
1152
1153         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
1154         trampolines.
1155
1156 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1157
1158         * mini-x86.c: Fixed commit.
1159
1160 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1161
1162         * aot-compiler.c (emit_plt): Align the plt section only on x86.
1163
1164 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1165
1166         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
1167         and MONITOR_EXIT, for the ASM fastpaths.
1168
1169         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
1170         available.
1171
1172         * mini.c, patch-info.h: Signature and patch infos for
1173         Monitor.Enter/Exit trampolines.
1174
1175         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
1176
1177         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
1178         Monitor.Enter/Exit ASM fastpath for Linux.
1179
1180 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1181
1182         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
1183
1184         * objects.cs: Add a new test.
1185         
1186         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
1187
1188         * aot-runtime.c (load_method): Run class initialization in the PLT case even
1189         if MONO_LOG_LEVEL is set.
1190
1191         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
1192
1193         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
1194
1195         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
1196         
1197         * aot-compiler.c: Change the relocation code to use virtual addresses instead
1198         of file offsets. Align the sections belonging to the data segment to 
1199         PAGESIZE.
1200
1201 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
1202
1203         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
1204         elf.h. Port it to amd64.
1205
1206 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1207
1208         * driver.c: Enable SIMD by default.
1209
1210 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1211
1212         * cpu-x86.md: Add prefetch op.
1213
1214         * mini-ops.h: Same.
1215
1216         * mini-x86.c: Same.
1217
1218         * mini.h: Add an enum for simd prefetch modes.
1219
1220         * simd-methods.h: Add prefetch function names.
1221
1222         * simd-intrinsics.c: Add prefetch ops for all vector types.
1223
1224 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
1225
1226         * aot-compiler.c (emit_bytes): Speed this up a little.
1227
1228 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
1229
1230         * aot-compiler.c: Add JIT time etc. statistics.
1231         
1232         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
1233
1234         * mini.h (MonoCompile): Add 'got_offset' field.
1235
1236         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
1237         method_got_offsets array.
1238
1239         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
1240         wrappers.
1241
1242         * aot-compiler.c (compile_method): Add generic method instances referenced
1243         by the method to the list of methods to be compiled, this is required so if
1244         A<T> references B<T>, and another assembly references A<int>, then it will
1245         also get a copy of B<int>.
1246
1247         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
1248         when checking for monitor enter/exit.
1249
1250 2008-10-30  Mark Probst  <mark.probst@gmail.com>
1251
1252         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
1253         for Monitor.Enter and Monitor.Exit if enabled.
1254
1255         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
1256         Solaris.
1257
1258 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
1259
1260         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
1261         of an OP_MOVE. Fixes #440046.
1262
1263         * basic-long.cs: Add a new test.
1264
1265 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
1266
1267         * mini.h: Add synchronization note for the managed counter-part.
1268
1269         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
1270         returns the simd caps of the current cpu.
1271
1272 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
1273
1274         * basic-simd.cs: Remove Console.WriteLine.
1275
1276 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1277
1278         * basic-simd.cs: New tests for Vector2ul.
1279
1280 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1281
1282         * simd-intrinsics.c: Add new vector type Vector2ul.
1283
1284 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1285
1286         * basic-simd.cs: New tests for Vector2l.
1287
1288 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1289
1290         * cpu-x86.md: Add long version of most packed int ops.
1291
1292         * mini-ops.h: Same.
1293
1294         * mini-x86.h: Same.
1295
1296         * simd-intrinsics.c: Add new vector type Vector2l.
1297
1298 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1299
1300         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
1301
1302         * simd-methods.h: Remove SN_op_BitwiseXor.
1303
1304 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
1305
1306         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
1307         alignment.
1308
1309 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1310
1311         * basic-simd.cs: Test for Vector2d.
1312
1313         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
1314         value.
1315
1316 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1317
1318         * cpu-x86.md: Add double version of all packed float ops.
1319
1320         * mini-ops.h: Same.
1321
1322         * mini-x86.h: Same.
1323
1324         * simd-intrinsics.c: Add new vector type Vector2d.
1325
1326         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
1327
1328         * simd-methods.h: Add Duplicate.
1329
1330 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1331
1332         * basic-simd.cs: Test for packing with signed saturation.
1333
1334 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
1335
1336         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
1337         found in the TYPESPEC table.
1338
1339 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
1340
1341         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
1342         too.
1343
1344         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
1345
1346         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
1347         instead of the RVA, since the RVA can be changed by tools like the cil 
1348         stripper.
1349
1350         * method-to-ir.c (mono_method_to_ir2): Ditto.
1351
1352         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
1353         (deserialize_variable): Ditto.
1354
1355 2008-10-25  Martin Baulig  <martin@ximian.com>
1356
1357         * debug-mini.c (write_variable): Use
1358         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
1359
1360 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1361
1362         * cpu-x86.md: Add unsigned variants of packd and packw.
1363
1364         * mini-ops.h: Same.
1365
1366         * mini-x86.h: Emit the right instruction for packd and packw.
1367         Add unsigned variants of packd and packw.
1368
1369         * simd-intrinsics.c: Packd and packw were used in place of their
1370         unsigned variants. Change that.
1371         Add intrinsics for (Signed)PackWithSignedSaturation.
1372
1373         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
1374
1375 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1376
1377         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
1378
1379 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1380
1381         * mini-ops.h: Remove dword packed add/sub with saturation ops.
1382
1383         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
1384
1385         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
1386         sse instructions.
1387
1388         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
1389
1390 2008-10-24  Mark Probst  <mark.probst@gmail.com>
1391
1392         * method-to-ir.c, mini.c: Special casing for the synchronized
1393         wrapper for the ldtoken+GetTypeFromHandle case.
1394
1395 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1396
1397         * mini.c (mono_replace_ins): Move this to branch-opts.c.
1398
1399         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
1400         created/split bblocks.
1401
1402 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1403
1404         * mini-ops.h: Add packed signed mul high.
1405         
1406         * cpu-x86.md: Same.
1407
1408         * mini-x86.c (mono_arch_output_basic_block): Same.
1409
1410         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
1411
1412         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
1413
1414 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1415
1416         * basic-simd.cs: Tests for Vector16sb.
1417
1418 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1419
1420         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
1421
1422 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1423
1424         * mini-ops.h: Add packed signed min, max and compare greater.
1425         
1426         * cpu-x86.md: Same.
1427
1428         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
1429         saturation.
1430
1431         * simd-methods.h: Add CompareGreaterThan.
1432
1433         * simd-methods.h: Remove CompareEquals.
1434
1435         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
1436
1437         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
1438
1439         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
1440         CompareEqual.
1441
1442 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1443
1444         * basic-simd.cs: Fix tests due to change in the API.
1445
1446 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1447
1448         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
1449
1450 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1451
1452         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
1453
1454         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
1455         inst_offset as this has invalid values for LDADDR.
1456
1457 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1458
1459         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1460
1461         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
1462
1463 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1464
1465         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
1466         for accessing field->data.
1467
1468 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1469
1470         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1471
1472 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1473
1474         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
1475
1476         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
1477
1478 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1479
1480         * dominators.c (mono_compute_natural_loops): Allocate GList enties
1481         from the cfg mempool.
1482
1483 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1484
1485         * basic-simd.cs: Tests for new methods in Vector8us.
1486
1487 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1488
1489         * mini-ops.h: Add multiply and store high.
1490         
1491         * cpu-x86.md: Same.
1492
1493         * mini-x86.c (mono_arch_output_basic_block): Same.
1494
1495         * simd-methods.h: Same.
1496
1497         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
1498         and CompareEqual.
1499
1500 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1501
1502         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
1503         mono_class_setup_vtable ().
1504
1505         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
1506         mono_class_get_vtable_entry () for accessing klass->vtable.
1507
1508         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
1509
1510         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
1511         found.
1512
1513         * method-to-ir.c (mono_save_token_info): Don't save references made from
1514         wrappers.
1515
1516         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
1517         of generic instances.
1518
1519         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
1520
1521 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1522
1523         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
1524         OP_JMP depends on the method signature.  Calculate it properly.
1525
1526 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1527         
1528         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
1529         called directly.
1530
1531         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
1532         instances.
1533         (emit_extra_methods): Add another table mapping method indexes to 
1534         offsets in the extra_method_info table.
1535
1536         * mini.h: Bump AOT file format version.
1537         
1538         * aot-runtime.c: Merge most of the code from mono_aot_get_method
1539         and mono_aot_get_method_from_token () into one function.
1540
1541 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1542
1543         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
1544         separate counter.
1545
1546 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
1547
1548         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
1549         methods.
1550
1551         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
1552         disable_aot.
1553
1554         * mini.c (mono_patch_info_equal): Compare the generic context as well.
1555
1556         * mini.h: Bump aot file format version.
1557
1558         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
1559         AOT file can contain native code for methods which are not in the METHOD
1560         table. Generate code for non-sharable generic instances of generic methods
1561         found in the METHODSPEC table.
1562         
1563         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
1564         encoding generic type handles.
1565
1566         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
1567         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
1568
1569         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
1570         macros + MONO_ADD_INS.
1571
1572         * mini.c (mono_jump_info_token_new2): New function which takes a generic
1573         context as well.
1574
1575         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
1576
1577         * mini.h: Bump aot file format version.
1578
1579         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
1580
1581 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1582
1583         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
1584         platforms, with definable stack alignment value.  Set to 16 now
1585         for all platforms.
1586
1587         * mini.c, mini.h, driver.c: Command line option for disabling
1588         stack alignment.
1589
1590 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1591
1592         * basic-simd.cs: Tests for new methods in Vector4ui.
1593
1594 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1595
1596         * mini-ops.h: Add packed int shuffle.
1597         
1598         * cpu-x86.md: Same.
1599
1600         * mini-x86.c (mono_arch_output_basic_block): Same.
1601
1602         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
1603         extract mask, max, min, shuffle.
1604
1605         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
1606
1607 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1608
1609         * basic-simd.cs: Tests for new methods in Vector8us.
1610
1611 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1612
1613         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
1614         RuntimeTypeHandle, not a TypedReference.
1615
1616 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
1617
1618         * simd-intrinsics.c: remove relocations.
1619
1620 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
1621
1622         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
1623         optimizations from the x86 backend.
1624
1625 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
1626
1627         * simd-methods.h, simd-intrinsics.c: debloat method names and
1628         prepare for no relocations.
1629
1630 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1631
1632         * mini-ops.h: Add packed min/equal and sum of absolute differences.
1633         
1634         * cpu-x86.md: Same.
1635
1636         * mini-x86.c (mono_arch_output_basic_block): Same.
1637
1638         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
1639         extract mask, max, min and sum of absolute differences.
1640
1641         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
1642         method name.
1643
1644 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1645
1646         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
1647         Renamed one test for consistency.
1648
1649 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1650
1651         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
1652         fix to the code that deal with other blocks.
1653
1654 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1655
1656         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
1657
1658 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1659
1660         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
1661         that deals with vreg interference. Explicitly check for OP_LDADDR to be
1662         able to process the source reg.
1663
1664 2008-10-16  Martin Baulig  <martin@ximian.com>
1665
1666         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
1667
1668         * inssel.brg: Add `OP_HARD_NOP'.
1669
1670         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
1671
1672         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
1673         `OP_HARD_NOP' instruction when running inside the debugger.
1674
1675         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
1676         `OP_HARD_NOP' instruction when running inside the debugger.
1677
1678 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1679
1680         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
1681         now works. The issue with the regalloc tripping up no longer
1682         happens.
1683
1684         * simd-intrinsics.c (load_simd_vreg): Same.
1685
1686 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1687         
1688         * basic-simd.cs: Tests for new Vector8ui methods.
1689
1690 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1691
1692         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
1693         only for type. This fixes crashes where MonoInst::klass is checked
1694         for ops of type != VTYPE or OBJ.
1695
1696         * simd-intrinsics.c (load_simd_vreg): Same.
1697
1698 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1699
1700         * mini-ops.h: Add ops for packed shuffle/max/avg and
1701         extract mask.
1702         
1703         * cpu-x86.md: Same.
1704
1705         * mini-x86.c (mono_arch_output_basic_block): Same.
1706
1707         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
1708         extract mask.
1709
1710         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
1711         to emit extract mask op.
1712
1713         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
1714         to emit word shuffles.
1715
1716 2008-10-15  Mark Probst  <mark.probst@gmail.com>
1717
1718         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
1719         the largest alignment needed by a variable, but at least
1720         sizeof(gpointer).
1721
1722 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1723
1724         * basic-simd.cs: Tests for the fixes in the last commit.
1725
1726 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1727
1728         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
1729         no longer handles STACK_PTR input.
1730
1731         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
1732
1733         * simd-intrinsics.c (load_simd_vreg): New function that works like 
1734         get_simd_vreg   but handles STACK_PTR input.
1735
1736         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
1737         as the input can be an arbitrary pointer.
1738
1739         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
1740         LDADDR local optimization directly otherwise use a store op.
1741
1742 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1743
1744         * basic-simd.cs: Tests for dup low and dup high.
1745
1746 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1747
1748         * mini-ops.h: Add dup low and dup high ops.
1749         
1750         * cpu-x86.md: Same.
1751
1752         * mini-x86.c (mono_arch_output_basic_block): Same.
1753
1754         * simd-intrinsics.c (vector4f_intrinsics): Same.
1755
1756 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1757
1758         * basic-simd.cs: Tests for recently added functionality.
1759
1760 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1761
1762         * mini-ops.h: Add remaining sse1 fp ops.
1763         
1764         * cpu-x86.md: Add remaining sse1 fp ops.
1765
1766         * mini-x86.c (mono_arch_output_basic_block): Same.
1767
1768         * mini.h: Add enum for simd FP compare conditions.
1769
1770         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
1771
1772         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
1773         so the backed can generate the appropriate op.
1774
1775 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1776         This patch squeese one more byte from the SimdIntrinsc struct.
1777
1778         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
1779         a a shift amount intead of simply or'ing it.
1780
1781         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
1782
1783         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
1784         byte so we can have an aditional flags field without increasing struct size.
1785
1786         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
1787         against the simd_supported_versions bitmask.
1788
1789         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
1790
1791 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
1792
1793         * mini.c: remove rawbuffer code (the only use here is unsafe because
1794         it takes locks during signal handling and the kernel now provides much
1795         better info in proc/pid/smaps these days).
1796
1797 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
1798
1799         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
1800         OP_X86_PUSH_OBJ. Fixes #434620.
1801
1802         * objects.cs: Add a test.
1803         
1804 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
1805
1806         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
1807         that the packuswb/packusdw don't work with unsigned numbers for what
1808         would be negative numbers in signed format.
1809
1810         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
1811         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
1812
1813         * mini-ops.h: Add doubleword forms of many ops and packing ones.
1814
1815         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
1816
1817         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
1818
1819         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
1820
1821         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
1822         add more ops.
1823
1824         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
1825         version as the enum in mini.h.
1826
1827         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
1828         for sse3 ops, check the simd_version field if present. This way the code
1829         works with all versions of sse.
1830
1831 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1832
1833         * simd-intrinsics.c: Fixed intrinsic name typo.
1834
1835         * mini.h: Added missing simd exported function.
1836
1837         * basic-simd.cs: Added tests for Vector4ui.
1838         Fixed broken test for Vector16b.
1839
1840 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
1841
1842         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
1843         the max length to 64.
1844
1845 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1846
1847         * method-to-ir.c: Only do the fast virtual generic method call for
1848         non-wrapper methods.
1849
1850         * mini.h, mini-trampolines.c: The new generic virtual remoting
1851         trampoline handles virtual method calls via the vtable (as done by
1852         the fast virtual generic method calls) to remoting proxies.
1853
1854         * mini.c (mono_jit_create_remoting_trampoline): For generic
1855         methods reate a generic virtual remoting trampoline.
1856
1857         * mini-amd64.h: Enable fast virtual generic method calls again.
1858
1859 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1860
1861         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
1862         restore registers when doing tail calls.
1863
1864 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1865
1866         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
1867         Vector4ui.
1868
1869 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1870
1871         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
1872
1873 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1874
1875         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
1876
1877 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1878
1879         * basic-simd.cs: Retrofit for API changes.
1880
1881 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1882
1883         * mini-ppc.c: Handle integer stack arguments for tail calls.
1884
1885 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1886
1887         * optflags-def.h: Removed sse3 optimization.
1888
1889         * driver.c: Same.
1890
1891         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
1892         sse3.
1893
1894         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
1895
1896         * mini.h: Added enumeration with simd versions.
1897
1898         * simd-intrinsics.c (emit_intrinsics): Use the new static var
1899         for detecting SSE3.
1900
1901         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
1902
1903         * mini.c (mini_init): Call mono_simd_intrinsics_init.
1904
1905 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1906
1907         * basic-simd.cs: Added tests for Vector8u and Vector16u.
1908
1909         * basic-simd.cs: Fixed test naming.
1910
1911 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1912
1913         * mini-ops.h: Added ops for packed and saturated math, shifts
1914         and packing/unpacking.
1915
1916         * cpu-x86.md: Added descriptors for the above ops.
1917
1918         * mini-x86.c: Added code to emmit the above ops.
1919
1920         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
1921
1922 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
1923
1924         * aot-compiler.c (compile_method): Enable AOT for generic code.
1925
1926         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
1927
1928 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
1929
1930         * mini.c: add a workaround for a common screwup that ends up blamed
1931         to mono (other processes blocking signal delivery).
1932
1933 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1934
1935         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
1936         in the LDFLD/STFLD opcodes. Fixes #432673.
1937
1938         * iltests.il.in: Add a new test.
1939
1940 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
1941
1942         * mini-arm.c: attach the thread in unmanaged->managed transitions
1943         using delegates (bug #433148).
1944
1945 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1946
1947        * basic-simd.cs: Use new ShuffleSel constants.
1948
1949 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1950
1951         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
1952
1953         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
1954         only disable simd intrinsics if no sse2 is detected.
1955
1956         * optflags-def.h: Added sse3.
1957
1958         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
1959         is disabled.
1960
1961 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1962
1963         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
1964         when adding delegate-invoke wrappers.
1965
1966 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1967
1968         * Makefile.am: Reenable the simd tests.
1969
1970 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
1971
1972         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
1973           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
1974           other vreg is allocated to that hreg.
1975
1976         Contributed under MIT/X11 license.
1977
1978 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1979
1980         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
1981         yet checked in.
1982
1983 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1984
1985         * basic-simd.cs: New test suite for SIMD intrinsics.
1986
1987         * Makefile.am: Added new tests.
1988
1989 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1990
1991         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
1992
1993         * mini-ops.h: Same.
1994
1995         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
1996
1997         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
1998         using SSE2 aware opcodes.
1999
2000         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
2001         is enabled, this code path is only reachable if conversion ops are emmited after
2002         mono_method_to_ir.
2003
2004         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
2005
2006         This optimization saves 6 bytes per conversion against the old version.
2007
2008 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
2009
2010         * aot-compiler.c (compile_method): Don't skip methods referencing 
2011         generic methods without a corresponding entry in token_info_hash, since
2012         encode_method_ref () can handle all generic methods now.
2013
2014         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
2015         generic context is set.
2016         
2017         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
2018         generic sharing of LDTOKEN.
2019
2020 2008-10-06  Mark Probst  <mark.probst@gmail.com>
2021
2022         * mini-amd64.h: Temporarily disabled fast virtual generic method
2023         calls because it breaks the System.Runtime.Remoting tests.
2024
2025 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
2026
2027         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
2028
2029         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
2030         so inlining actually works.
2031         (check_inline_caller_method_name_limit): Ditto.
2032
2033 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
2034
2035         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
2036         64 bit safety (from Olaf Hering and Andreas Färber).
2037
2038 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
2039         
2040         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
2041         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
2042         unused virtual call support code.
2043
2044         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
2045         
2046         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
2047         which can't use aot trampolines.
2048         (decode_patch): Don't create aot trampolines for methods which can't use
2049         them.
2050
2051         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
2052         use aot trampolines.
2053
2054         * mini.h: Bump AOT image format version.
2055         
2056 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
2057
2058         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
2059         to save_token_info () since cmethod is inflated for constrained calls.
2060
2061         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
2062
2063 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
2064
2065         * Makefile.am: Add build rules for ppc64.
2066         This avoids the build failing at pedump with unresolved symbols
2067         due to lack of arch_sources. Instead it will now fail earlier
2068         due to lack of cpu-ppc64.md.
2069
2070         Contributed under MIT/X11 license.
2071
2072 2008-10-04  Mark Probst  <mark.probst@gmail.com>
2073
2074         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
2075         tail calls.
2076
2077         * iltests.il.in: Add test case for tail call with many arguments.
2078
2079 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
2080
2081         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
2082         to the fast virtual generic method code until the aot case is fixed.
2083
2084 2008-10-03  Mark Probst  <mark.probst@gmail.com>
2085
2086         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
2087
2088 2008-10-03  Mark Probst  <mark.probst@gmail.com>
2089
2090         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
2091         thunks.
2092
2093 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
2094         
2095         * simd-intrinsics.c: Forgot to add this one.
2096
2097         * mini-codegen.c: Fix macro in case SIMD is not supported.
2098
2099 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
2100         
2101         This patch land initial JIT support for simd intrinsics.
2102
2103         * mini-x86.h: Added new define to make --enable_minimal work on x86.
2104
2105         * Makefile.am: Added simd-intrinsics.c
2106
2107         * simd-intrinsics.c: New file with simd instrinsic related
2108         code.
2109
2110         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
2111
2112         * cpu-x86.md: Add simd related instructions.
2113
2114         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
2115
2116         * driver.c: Added two new --regression variants.
2117
2118         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
2119
2120         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
2121
2122         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
2123         extract some complicated logic to helper functions.
2124
2125         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
2126
2127         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
2128
2129         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
2130         the specialized simplification pass.
2131
2132         * method-to-ir.c (mono_spill_global_vars): Use new macro.
2133
2134         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
2135
2136         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
2137         table.
2138
2139         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
2140         if MONO_ARCH_NEED_SIMD_BANK is defined.
2141
2142         * mini-ops.h: Added the new simd ops.
2143
2144         * mini-x86.c: Added mono_arch_xregname.
2145
2146         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
2147
2148         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
2149
2150         * mini-x86.h: Define simd related MONO_ARCH macros.
2151
2152         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
2153
2154         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
2155
2156         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
2157         MONO_CLASS_IS_SIMD to deal with simd related IR.
2158
2159         * mini.h (MonoInst): Added spill_var to the backend union.
2160
2161         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
2162
2163         * mini.h: Added forward declarations of the new simd fuctions.
2164
2165         * optflags-def.h: Added new optimization names SIMD.
2166
2167         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
2168
2169         * regalloc.h: Added support for working with 3 register banks.
2170
2171         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
2172
2173         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
2174
2175 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
2176
2177         * mini-exceptions.c: remove 64 bit related ifdef clutter.
2178
2179 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
2180
2181         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
2182         instead of one on 64 bit systems.
2183
2184         * method-to-ir.c: Remove unused includes.
2185
2186 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
2187
2188         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
2189         cfg->used_int_regs, since the two are different on arm.
2190
2191 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2192
2193         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
2194         mono_method_get_vtable_index() to get the vtable index.
2195
2196 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2197
2198         * method-to-ir.c (mono_method_to_ir2): Don't create native
2199         wrappers for array methods, because they're never called (and if
2200         they were called they wouldn't work).
2201
2202 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2203
2204         * method-to-ir.c (mono_method_to_ir2): Array methods are
2205         special-cased and must not be invoked indirectly via the (M)RGCTX
2206         when generic sharing is turned on.  Fixes #431413.
2207
2208 2008-10-01  Mark Probst  <mark.probst@gmail.com>
2209
2210         * method-to-ir.c: When generic sharing is active, call
2211         non-interface virtual generic methods via the standard trampoline.
2212
2213         * mini-trampolines.c: Handle virtual generic shared methods.
2214
2215         * mini.h, mini-x86.c, mini-x86.h: New argument for
2216         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
2217         method thunks and which is the trampoline to call if the lookup
2218         fails.  Enable the virtual generic method thunk for x86.
2219
2220         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
2221         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
2222         argument but assert that it's NULL, because these archs don't yet
2223         implement the virtual generic method thunk.  Changes in the IMT
2224         thunk data structures.
2225
2226 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
2227
2228         * aot-compiler.c (emit_globals): Avoid invalid characters in
2229         the static linking symbol.
2230
2231         * objects.cs: Add a test for the range check optimization. Fix warnings.
2232
2233         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
2234         optimization from the current JIT.
2235
2236         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
2237         later in decompose_array_access_opts () to allow more optimizations.
2238
2239         * method-to-ir.c (mono_handle_soft_float): Rename this to 
2240         mono_decompose_soft_float () for consistency.
2241
2242         * mini-ops.h: Fix arguments of OP_STRLEN.
2243
2244         * method-to-ir.c (save_cast_details): Extract the cast details saving code
2245         into a separate function.
2246         (reset_cast_details): Ditto.
2247         (handle_unbox): Save cast details. Fixes #431254.
2248
2249         * method-to-ir.c: Remove some obsolete FIXMEs.
2250
2251 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2252
2253         * ir-emit.h (alloc_dreg): Write a warning before crashing.
2254
2255 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2256
2257         * mini-codegen.c: More work on macros to make them
2258         ready for multiple regbanks.
2259
2260 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2261
2262         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
2263
2264         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
2265
2266 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2267
2268         * mini-codegen.c (mono_spillvar_offset): Proper support for
2269         multiple regbanks.
2270
2271 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
2272
2273         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
2274         the stack overflow changes.
2275
2276 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2277
2278         * mini-codegen.c: Make all bank macros depend on reg_bank.
2279
2280         * mini-codegen.c (mono_local_regalloc): Make free mask
2281         initialization regbank aware.
2282
2283 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2284
2285         * mini-codegen.c (mono_local_regalloc): Extract callee
2286         mask selection to a function and make it regbank aware.
2287
2288 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2289
2290         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
2291         code to deal with many regbanks.
2292
2293 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
2294
2295         * mini-codegen.c: More fp->regbank changes.
2296
2297 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
2298
2299         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
2300         of a hardcoded constant.
2301
2302 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
2303
2304         * method-to-ir.c (type_from_stack_type): Fix typo.
2305
2306 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * mini-ia64.c (emit_move_return_value): Convert float return values to
2309         double.
2310
2311         * objects.cs: Add a new test.
2312         
2313         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
2314         VARARG methods to fix an assert later.
2315
2316         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
2317         end so it at least compiles.
2318
2319 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
2320
2321         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
2322
2323 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
2324
2325         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
2326         optimization to a new function (emit_optimized_ldloca_ir) and enable
2327         it for both ldloca and ldloca_s.
2328
2329 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
2330
2331         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
2332         gshared CASTCLASS code.
2333
2334         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
2335         amd64, where the libc stack unwinder encounters stack frames referring to
2336         native code in unmapped memory.
2337
2338         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
2339         sharing.
2340
2341         * generics.cs: Add new test.
2342
2343 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
2344
2345         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
2346         add a check that one of the ARM_FPU_ constants is defined.
2347
2348         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
2349         
2350         * mini-exceptions.c: Fix build on non-altstack platforms.
2351
2352         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
2353         sharing of vtypes.
2354
2355         * ir-emit.h: Add a comment to NEW_PCONST.
2356
2357         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
2358
2359         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
2360
2361         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
2362         after the changes to MonoJitDomainInfo.
2363
2364 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2365
2366         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
2367
2368 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2369
2370         * mini-ppc.c: Compiler warning fixes.
2371
2372 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2373
2374         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
2375         for pinvokes.
2376
2377 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2378
2379         * exceptions-ppc.c, mini-ppc.h: Compile
2380         mono_arch_handle_altstack_exception() on Darwin, too.
2381
2382 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2383
2384         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
2385         work on archs which don't have generic sharing implemented, only
2386         without the vtable_arg.
2387
2388 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2389
2390         * mini.c: Added comment explaining why delegate ctor icall
2391         wrappers are compiled.
2392
2393 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2394
2395         * mini.c: Don't produce trampolines to delegate ctor icall
2396         wrappers but compile them upfront.
2397
2398 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
2399
2400         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
2401         runtime-set function when going back to managed code. Currently this
2402         is used to set back the protection on the soft ovf pages and/or to
2403         throw the stack overflow exception that happened in unmanaged code.
2404
2405 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
2406
2407         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
2408         runtime-set function when going back to managed code. Currently this
2409         is used to set back the protection on the soft ovf pages and/or to
2410         throw the stack overflow exception that happened in unmanaged code.
2411
2412 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
2413
2414         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
2415         the support code for restoring stack protection after stack overflows
2416         that happen in unmanaged code. Don't set the exec permission on the
2417         soft overflow area.
2418
2419 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
2420
2421         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
2422         delegate->method_ptr is set. Fixes #428054.
2423
2424 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2425
2426         * tests.cs: Rename to ratests.cs.
2427
2428         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
2429         emit_get_rgctx_... functions.
2430
2431 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2432
2433         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
2434
2435 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2436
2437         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
2438         before asserting that method is sharable.
2439
2440 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2441
2442         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
2443         whether method needs a static RGCTX wrapper used instead of
2444         complex conditions.
2445
2446         * generic-sharing.c, mini.h: A few functions moved to
2447         metadata/generic-sharing.c.
2448
2449 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2450
2451         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
2452         Generic code sharing for value types, which essentially means
2453         treating value type methods like static methods.  The RGCTX is
2454         passed in the same way.
2455
2456 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2457
2458         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
2459         opcode when creating multi-dimensional arrays of open types.
2460
2461         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
2462         open generic types.
2463
2464         * generics.cs: Add a test.
2465
2466         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
2467
2468 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2469
2470         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
2471
2472         * mini.c (mini_method_compile): Set it when running under the debugger. 
2473
2474         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
2475         vreg optimization if the flag is set.
2476
2477         * driver.c (mono_main): Add --attach= option to pass options to
2478         the attach agent.
2479
2480         * mini.c (sigquit_signal_handler): Start the attach agent.
2481
2482         * ssapre.c: Disable this to save space since it is not yet ported to
2483         linear IR.
2484
2485         * regalloc2.c: Disable this to save space.
2486
2487         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
2488
2489 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
2490
2491         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
2492         the -v option useful again.
2493
2494 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2495
2496         * mini-amd64.c (mono_arch_output_basic_block): Add support for
2497         --break-at-bb.
2498
2499         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
2500         arrays of arrays. Fixes #428406.
2501
2502         * method-to-ir.c (mini_emit_castclass): Ditto.
2503
2504         * objects.cs: Add new test.
2505         
2506 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
2507
2508         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
2509         was wrong at it choked against target_type_is_incompatible for byref types.
2510
2511 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2512
2513         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
2514         places.
2515
2516 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
2517
2518         * mini-exceptions.c: update a few more exceptions-related counters.
2519
2520 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
2521
2522         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
2523         new functions to allocate from persistent mempools.
2524
2525 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2526
2527         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
2528         multiple register banks in the future.
2529
2530         * mini-codegen.c (mono_local_regalloc): Fix a warning.
2531
2532 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
2533
2534         * mini.c (type_to_eval_stack_type): Remove duplicated function.
2535
2536         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
2537
2538         * mini.h: Export type_to_eval_stack_type.
2539
2540         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
2541         is only ins->klass of byref types.
2542
2543 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
2544
2545         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
2546         (mini_emit_memcpy2): Ditto.
2547
2548         * mini-amd64.c: Fix a warning.
2549
2550 2008-09-21  Mark Probst  <mark.probst@gmail.com>
2551
2552         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
2553         linking.
2554
2555 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
2556
2557         * method-to-ir.c: Extract stloc micro-optimization to a
2558         function and apply it to all cases.
2559
2560 2008-09-19  Mark Probst  <mark.probst@gmail.com>
2561
2562         * method-to-ir.c: Don't fail generic code sharing in cases we
2563         already support.
2564
2565 2008-09-18  Mark Probst  <mark.probst@gmail.com>
2566
2567         * mini-ppc.c: Handle structs in tailcalls on Darwin.
2568
2569 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
2570
2571         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
2572         implementation.
2573
2574 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
2575
2576         * trace.c: make tracing more useful and correct, with per-thread
2577         id and indent info.
2578
2579 2008-09-15  Mark Probst  <mark.probst@gmail.com>
2580
2581         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
2582         doing a method call and the argument is an R4.
2583
2584 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
2585
2586         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
2587         generic methods.
2588
2589 2008-09-13  Mark Probst  <mark.probst@gmail.com>
2590
2591         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
2592
2593 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
2594
2595         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
2596         (MONO_JUMP_TABLE_FROM_INS): Ditto.
2597
2598 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2599
2600         * driver.c: Add a --agent argument (not supported yet) to load managed
2601         agent assemblies before loading the main assembly, similarly to how the
2602         Java VM handles agents.
2603
2604 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2605
2606         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
2607         function to do stack layout of local variables.
2608
2609 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2610
2611         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
2612         calculation.
2613
2614 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2615
2616         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
2617         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
2618         JIT if DISABLE_JIT is defined.
2619
2620         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
2621         defined.
2622
2623 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2624
2625         * iltests.il.in: Disable the fconv test on PPC (the result is
2626         undefined according to ECMA).
2627
2628 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2629
2630         * iltests.il.in: Enable tail call tests for PPC.
2631
2632         * mini.h: Add variable for storing incoming valuetype argument
2633         addresses for tail calls.
2634
2635         * mini-ppc.c: Implement valuetype arguments and return values for
2636         tailcalls on Linux.
2637
2638 2008-09-09  Mark Probst  <mark.probst@gmail.com>
2639
2640         * mini-ppc.c: Partially implement tail calls (struct arguments and
2641         return values not supported).
2642
2643         * method-to-ir.c: Enable tail calls on PPC.
2644
2645 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
2646
2647         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
2648         runtime-invoke wrappers to work around the problem of them getting
2649         assigned to a random class.
2650
2651         * aot-runtime.c (mono_aot_get_method): Ditto.
2652         
2653 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
2654
2655         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
2656         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
2657
2658 2008-09-07  Mark Probst  <mark.probst@gmail.com>
2659
2660         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
2661         until they're implemented properly.
2662
2663         * exceptions-ppc.c: Use arch-independent exception-handling code
2664         instead of custom one.
2665
2666         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
2667         for Linear IR.
2668
2669         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
2670
2671         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
2672         applies when __powerpc__ is defined.
2673
2674 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
2675
2676         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
2677         methods to their code to avoid computing the full name of wrappers and
2678         doing a lookup in a string hash table.
2679
2680 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2681
2682         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
2683         we identify bblocks before method_to_ir () is ran.
2684
2685         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
2686         Also avoid optimizing branches pointing to themselves.
2687
2688         * mini.c (mini_method_compile): Ditto. Fixes #422947.
2689
2690 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2691
2692         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
2693
2694 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2695
2696         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
2697         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
2698         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
2699         'buf'.
2700
2701         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
2702         jumped to the same entry in plt_jump_table.
2703
2704 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
2705
2706         * method-to-ir.c (initialize_array_data): Handle field with RVA from
2707         dynamic images.
2708
2709 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
2710
2711         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
2712         other assignment can be if converted. Saves 1.5% on corlib size and fixes
2713         #421807.
2714
2715 2008-08-29  Geoff Norton  <gnorton@novell.com>
2716
2717         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
2718         segment, and doesn't properly handle .space as .text.  Fixes
2719         AOT Mach/ARM
2720
2721 2008-08-29  Geoff Norton  <gnorton@novell.com>
2722
2723         * mini.c: Disable the mach exception handler when running on 
2724         ARM
2725
2726 2008-08-29  Geoff Norton  <gnorton@novell.com>
2727
2728         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
2729         globals on Darwin/ARM
2730
2731 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
2732
2733         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
2734         since too many things depend on it. Instead, call 
2735         mono_runtime_set_no_exec ().
2736         
2737         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
2738         the new JIT.
2739
2740         * aot-compiler.c: Add an 'asm-only' AOT option.
2741
2742         * mini.c: Avoid initializing the runtime when doing AOT compilation.
2743                 
2744         * aot-compiler.c (compile_method): Disable gshared support for now as it
2745         doesn't yet work.
2746
2747 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2748
2749         * mini-amd64.h : Fix a compiler warning.
2750
2751         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
2752           Changed to use a callback function to retrieve the unwind info.
2753           This avoids problems observed when code blocks were removed by
2754           unloading an app domain.
2755
2756         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
2757           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
2758           to work properly.
2759
2760         Contributed under MIT/X11 license.
2761
2762 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2763
2764         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
2765           case to keep the stack aligned to 8.
2766
2767         Contributed under MIT/X11 license.
2768
2769 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
2770
2771         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
2772         avoid repeated linear searches.
2773
2774 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
2775
2776         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
2777         methods it can't handle.
2778         
2779         * aot-compiler.c (add_method): Avoid adding a method twice.
2780         (add_wrappers): Add runtime invoke wrappers for all methods.
2781
2782         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
2783         function to create an aot-compatible version of this trampoline.
2784
2785         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
2786
2787 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
2788
2789         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
2790
2791         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
2792         with a generic sharing failure.
2793
2794         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
2795
2796         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
2797         CEE_RETHROW. Fixes #419634.
2798
2799         * mini.c (mono_method_to_ir): Ditto.
2800
2801         * exceptions.cs: Add a new test.
2802         
2803         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
2804         to mono_type_stack_size_internal () since some callers might not pass in
2805         an rgctx.
2806
2807         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
2808         instrument_prolog. Fixes #419878.
2809
2810         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
2811         doubles in soft float mode volatile.
2812
2813 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
2814
2815         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
2816
2817         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
2818         to handle soft float correctly.
2819
2820         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
2821         the fast path.
2822
2823         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
2824
2825         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
2826         to sp, since the generics catch code requires it.
2827
2828         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
2829         copying.
2830
2831         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
2832         mono_arch_emit_imt_argument ().
2833
2834         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
2835
2836         * mini-arm.c tramp-arm.c: Generic sharing updates.
2837
2838 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
2839
2840         * mini-arm.c: Fix the arm build.
2841
2842         * generic-sharing.c (mini_type_get_underlying_type): New helper function
2843         handling enums, generic instances and generic sharing.
2844         (mini_type_stack_size_full): Ditto.
2845
2846         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
2847         
2848         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
2849
2850         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
2851
2852         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
2853         trampolines.
2854
2855         * mini-arm.c: Various small generic sharing changes.
2856
2857         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
2858         this for x86.
2859         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
2860         custom code.
2861
2862         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
2863         helper function to return a generic class init trampoline.
2864
2865         * method-to-ir.c mini.c: Use it.
2866         
2867         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
2868         arch-specfic function to return a generic class init trampoline.
2869
2870         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
2871         the GENERIC_CLASS_INIT custom code.
2872
2873         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
2874         a fatal error, not a sharing failure.
2875
2876         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
2877         needed.
2878
2879         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
2880         trampoline argument from MONO_ARCH_VTABLE_REG.
2881
2882         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2883         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2884         argument, and pass the vtable in VTABLE_REG.
2885
2886         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2887         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2888         argument, and pass the vtable in VTABLE_REG.
2889         (mono_arch_create_trampoline_code_full): Remove some special casing for
2890         the rgctx fetch trampoline.
2891
2892         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
2893         Fixes #419273.
2894
2895         * iltests.il: Add a test for it.
2896
2897 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
2900
2901         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
2902         no longer needed.
2903
2904         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
2905         use mono_jit_info_table_find () to avoid recursion.
2906         (mono_delegate_trampoline): Add a sync wrapper here.
2907
2908         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
2909         here.
2910
2911         * mini.c (mono_method_to_ir): Ditto.
2912         
2913         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
2914         add_sync_wrapper argument. Don't add a sync wrapper here.
2915         (mono_create_jump_trampoline): Don't add a sync wrapper here.
2916
2917         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
2918         
2919 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2920
2921         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
2922           of nonvolatile registers back from MonoContext to CONTEXT.
2923
2924         Contributed under MIT/X11 license.
2925
2926 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2927
2928         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
2929           arguments on Winx64 there are only 4 argument registers.  For this
2930           logic to work the last argument must be pulled from the stack.  
2931
2932         Contributed under MIT/X11 license.
2933
2934 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
2935
2936         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2937
2938         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
2939         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
2940         encode/decode_method_ref ().
2941
2942         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
2943
2944         * aot-runtime.c (decode_patch): Ditto.  
2945
2946         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
2947         MONO_PATCH_INFO_METHOD.
2948
2949         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
2950         MonoGenericJitInfo.
2951
2952         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
2953         MonoGenericJitInfo.
2954
2955         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
2956
2957         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
2958         one from the caller.
2959
2960         * aot-runtime.c (decode_generic_inst): New function to decode and
2961         return a interned generic inst.
2962         (decode_klass_ref): Use it.
2963         (decode_method_ref): Ditto.
2964
2965         * aot-compiler.c (emit_exception_debug_info): Save 
2966         jinfo->has_generic_jit_info too.
2967
2968 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2969
2970         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
2971
2972         * iltests.il.in: Add a test for fconv_to_i.
2973
2974         * liveness.c: Disable the liveness2 pass for now to save space.
2975
2976         * regalloc2.c: Include mempool-internals.h to fix warnings.
2977
2978         * aot-compiler.c (encode_method_ref): Encode the context of generic
2979         instance methods.
2980
2981         * aot-runtime.c (decode_method_ref): Inflate generic methods using
2982         the context saved in the aot file.
2983
2984         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2985
2986         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2987
2988         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
2989         volatile so they won't be optimized away.
2990
2991 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2992
2993         * ssa.c:
2994         * ssa2.c:
2995         * mini.c:
2996         * regalloc2.c:
2997         * dominators.c: Remove duplicated functions that now are in
2998         mempool-internals.h.
2999
3000 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
3001
3002         * aot-compiler.c: Fix warnings.
3003
3004         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
3005
3006         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
3007
3008         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
3009         as the patch type.
3010
3011         * mini.c (mono_resolve_patch_target): Ditto.
3012         
3013         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
3014         (encode_klass_ref): Add support for encoding VARs/MVARs.
3015
3016         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
3017
3018         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
3019         the handling of the got entries into a separate 'decode_got_entry' function.
3020         Add support for RGCTX_FETCH.
3021
3022         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
3023         clobbered by the trampoline code.
3024
3025         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
3026         not clobbered by the indirect calling code.
3027
3028 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
3029
3030         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
3031         to fix the build.
3032
3033 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
3034
3035         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
3036         signature using the compilation mempool otherwise we would leak it.
3037
3038 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
3039
3040         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
3041         mono_emit_abs_call ().
3042
3043         * patch-info.h: Add GENERIC_CLASS_INIT.
3044
3045         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
3046
3047         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
3048         as their target as a near call.
3049
3050         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
3051         ABS handling code.
3052         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
3053
3054         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
3055         call to a runtime function described by a patch.
3056
3057         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
3058         mono_emit_abs_call, this has the advantage that the ABS handling code in
3059         mono_codegen () can handle them both, and can handle other stuff in the
3060         future without additional code.
3061
3062         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
3063         entry.
3064         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
3065         abs addresses.
3066
3067         * mini.h: Add missing bblock related prototypes.
3068
3069         * mini.h (MonoCompile): Remove unused reverse_inst_list and
3070         reverse_inst_list_len fields.
3071
3072         * mini.c: Refactor this file a bit by moving branch optimizations to 
3073         branch-opts.c.
3074
3075         * method-to-ir.c: Merge generic sharing changes missed earlier.
3076
3077         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
3078
3079         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
3080         shared patches. Process METHODCONST as a shared patch.
3081
3082         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
3083         as it crashes on the 2.0 mscorlib.
3084
3085         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
3086         to cause crashes.
3087         
3088         * aot-compiler.c: Use is_plt_patch () in a few additional places.
3089         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
3090         by IMT.
3091
3092         * aot-compiler.c: Reorganize the got handling code to be a bit more
3093         understandable.
3094
3095 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
3096
3097         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
3098         mono_patch_info_equals/hash, and use it to massively simplify
3099         get_plt_index ().
3100
3101         * mini.c (mono_patch_info_hash): Simplify this and add support for
3102         more patch types.
3103
3104         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
3105
3106         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
3107         handling code, since an offset is not enough to identify a trampoline.
3108
3109         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
3110
3111 2008-08-17  Mark Probst  <mark.probst@gmail.com>
3112
3113         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
3114
3115         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
3116
3117         * mini-ops.h: Argument and result types for OVF_CARRY ops.
3118
3119         * decompose.c: PPC decompositions for various ops.
3120
3121         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
3122
3123 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
3124
3125         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
3126         call the generic trampoline code using a call, instead of a jump, to
3127         remove some special casing from the generic trampoline code.
3128
3129         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
3130         (mono_codegen): Ditto.
3131
3132         * aot-compiler.c aot-runtime.c: Ditto.
3133
3134         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
3135
3136         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
3137         helper function to find the offset corresponding to a lazy fetch trampoline.
3138
3139         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
3140         when doing generic sharing.
3141
3142         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
3143         places.
3144         
3145         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
3146         mini-trampolines.c to be with the other trampoline creation functions.
3147
3148         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
3149         as it is equal to method->signature in most cases, add a 
3150         mono_emit_method_call_full variant which takes a signature and an imt
3151         argument as well.
3152
3153 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
3154
3155         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
3156         to this function, since it could be computed easily from the method 
3157         argument.
3158         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
3159         more.
3160
3161         * method-to-ir.c mini.c: Remove references to 
3162         compile_generic_method_wo_context.
3163
3164         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
3165         generic method calls.
3166         
3167         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
3168         dimensional non-szarrays.
3169
3170         * mini.c (mini_init): Register mono_array_new_1.
3171
3172         * jit-icalls.c (mono_array_new_1): New jit icall.
3173
3174         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
3175         pointing to the method.
3176
3177         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
3178         method addresses belonging to METHOD_JUMP patches in the 
3179         jump_target_got_slot_hash.
3180         (mono_aot_load_method): Ditto.
3181
3182         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
3183         METHOD_JUMP patches.
3184
3185         * mini.c (mini_create_jit_domain_info): New helper function which 
3186         initializes/frees domain->runtime_info.
3187         (mini_free_jit_domain_info): Ditto.
3188         (mini_init): Install the domain hook functions with the runtime.
3189
3190         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
3191         information maintained by the JIT.
3192
3193         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
3194         insertion into jump_table_hash into mono_codegen (), also implement proper
3195         locking.
3196
3197         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
3198         tail calls, it is already done by the aot code.
3199         
3200         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
3201         mechanism on amd64.
3202
3203         * iltests.il.in: Make the jmp test a bit more complex.
3204
3205         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
3206         generic instances which doesn't have a token.
3207
3208         * aot-runtime.c (decode_method_ref): Ditto.
3209         
3210         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
3211         can handle this case now.
3212         (handle_box): Ditto.
3213
3214 2008-08-15  Geoff Norton  <gnorton@novell.com>
3215
3216         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
3217         debugging check.
3218
3219 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
3220
3221         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
3222         calling generic methods.
3223
3224         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
3225
3226         * aot-runtime.c (decode_patch_info): Ditto.
3227
3228         * mini.c (mono_resolve_patch_target): Ditto.
3229         
3230         * patch-info.h: Add METHOD_RGCTX.
3231
3232         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
3233
3234 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
3235
3236         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
3237         arguments in registers.
3238
3239         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
3240         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
3241
3242         * mini.c (mini_method_compile): Abort aot compilation for generic
3243         methods if generic sharing is disabled.
3244         
3245         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
3246         an mrgctx.
3247
3248         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
3249         requiring an mrgctx.
3250
3251         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
3252         store instructions when converting a vcall to a normal call.
3253
3254         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
3255         mono_arch_find_jit_info.
3256
3257 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
3258
3259         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
3260         avoid calling mono_method_full_name () for every method even if the
3261         env var is not set.
3262         (check_inline_caller_method_name_limit): Ditto.
3263
3264 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
3265
3266         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
3267         assemblies in one run.
3268
3269         * aot-compiler.c (mono_compile_assembly): Only print out a count of
3270         skipped methods if it is not 0.
3271
3272         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
3273
3274 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
3275
3276         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
3277           MONO_ARCH_HAVE_UNWIND_TABLE.
3278
3279         Contributed under MIT/X11 license.
3280
3281 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
3282
3283         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
3284           from default optimizaton list on Winx64.
3285
3286         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
3287
3288         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
3289           the LMF from the MonoJitTlsData structure.
3290
3291         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
3292
3293         Contributed under MIT/X11 license.
3294
3295 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
3296
3297         * mini.c (sigsegv_signal_handler): Fix the build.
3298
3299         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
3300         assembly->aot_module.
3301
3302         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
3303         hash table. This simplifies and speeds up a lot of code, and fixes support
3304         for .netmodules.
3305
3306         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
3307         with the runtime.
3308
3309         * mini-exceptions.c: Ditto.
3310         
3311         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
3312         'native_offset' argument, since these are computed in the 
3313         mono_find_jit_info () function.
3314
3315         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
3316         is used by exceptions-ppc.c.
3317
3318         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
3319         mono_arch_find_jit_info ().
3320         
3321         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
3322         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
3323         generic code in mini-exceptions.c.
3324
3325 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
3326
3327         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
3328
3329         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
3330         
3331         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
3332         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
3333         called while holding the loader lock. Fixes #415608.
3334         (mono_aot_get_method_from_token_inner): Ditto.
3335
3336 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3337
3338         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
3339         to reduce differences between this and the generic implementation in
3340         mini-exceptions.c.
3341         (ves_icall_get_frame_info): Ditto.
3342
3343         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
3344
3345         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
3346         longer neccesarry.
3347
3348         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
3349         mono_arch_get_call_filter () and make it non-static, for consistency with the
3350         other architectures.
3351
3352 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
3353
3354         * mini.c:
3355         * local-propagation.c:
3356         * mini-x86.c: Correct the name of arch defines.
3357
3358 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3359
3360         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
3361         NO_EMULATE_LONG_SHIFT_OPS define.
3362
3363 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
3364
3365         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
3366         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
3367
3368         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
3369         MACH fixes. Merged from the 2.0 branch.
3370
3371         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
3372
3373         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
3374         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
3375
3376         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
3377
3378         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
3379         mono_marshal_get_native_wrapper () signature changes.
3380
3381 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3382
3383         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
3384         conversion bug under arm.
3385
3386 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
3387
3388         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
3389
3390         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
3391         with overflow checking.
3392
3393 2008-08-05  Marek Habersack  <mhabersack@novell.com>
3394
3395         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
3396         to the genmdesc.pl file
3397
3398 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
3399
3400         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
3401         arg_array in the soft-float versions of the LOAD/STORE macros.
3402
3403         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
3404         implementation.
3405
3406         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
3407
3408 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3409
3410         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
3411         a float HFA. Fixes #413621.
3412
3413 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
3414
3415         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
3416         frame_size to args_size. Fixes build.
3417
3418 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3419
3420         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
3421         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
3422
3423         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
3424         the stack are not unaligned. Fixes #413247.
3425         
3426 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3427
3428         * mini.c: update jitted methods performance counters.
3429
3430 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
3431
3432         * mini-exceptions.c: increase the exceptions thrown performance
3433         counter in mono_handle_exception ().
3434
3435 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
3436
3437         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
3438         can work with netmodules.
3439
3440 2008-07-28  Geoff Norton  <gnorton@novell.com>
3441
3442         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
3443         regression tests.
3444
3445 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3446
3447         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
3448         correct place.
3449
3450 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
3451
3452         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3453           The float param registers and other param registers must be the 
3454           same index on Windows x64.
3455
3456         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
3457           ArgValuetypeAddrInIReg argument case.  Setting the argument
3458           op to OP_VTARG_ADDR (OP_REGOFFSET)).
3459
3460         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
3461           variable computed above as the copy length for arguments of storage
3462           type ArgValuetypeAddrInIReg.
3463
3464         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
3465           ArgValuetypeAddrInIReg argument case.  This case will rely on
3466           mono_arch_emit_outarg_vt to emit the correct code later in the process.
3467
3468         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
3469           a 32 byte stack allocation for all calls.  We will omit the adjustment for
3470           jump and tail call instructoins as they do not follow the typical call behavior.
3471
3472         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
3473           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
3474           local variable and pass the local variable by reference to the called method.
3475
3476         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
3477           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
3478           of a struct is passed in a register it must be saved with the other
3479           volatile argument on the stack.
3480
3481         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
3482           frame pointer the stack adjustment value must be saved to the unwind 
3483           info structure.
3484
3485         Contributed under MIT/X11 license.
3486
3487 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3488
3489         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
3490         which got lost in the merge.
3491
3492 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3493
3494         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
3495         build.
3496
3497         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
3498         
3499         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
3500         icalls, since they won't be patched.
3501
3502         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
3503         different code sequence when running under valgrind to prevent some valgrind
3504         errors.
3505
3506         * iltests.il.in: Add new regression test.
3507
3508         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
3509         end with a throw.
3510
3511         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
3512         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
3513
3514         * iltests.il.in: Add new test.
3515
3516         * aot-compiler.c: Fix some warnings.
3517
3518         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
3519         Fixes #412494.
3520
3521 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3522
3523         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
3524         (mini_usage_jitdeveloper): Add a missing --wapi option.
3525
3526 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3527
3528         * mini-codegen.c: Simplify the is_fp macros.
3529         (free_up_ireg): Remove, use free_up_reg instead.
3530         (free_up_reg): Fix the fp case.
3531
3532 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3533
3534         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
3535         lowered earlier.
3536
3537         * exceptions-x86.c: Merge some changes which seemed to have got lost
3538         in the linear-ir merge.
3539
3540         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
3541
3542         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
3543         long vreg volatile even if the variable was already created.
3544
3545         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
3546         volatile variables.
3547
3548 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3549
3550         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
3551
3552         * mini.c (mono_jit_compile_method_inner): Add support for 
3553         MONO_EXCEPTION_BAD_IMAGE.
3554
3555         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
3556         mini_method_get_context () returns NULL. Fixes #356531.
3557
3558         * mini.c (mono_method_to_ir): Ditto.
3559         
3560         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
3561         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
3562
3563 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3564
3565         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
3566         in the LDFTN implementation.
3567
3568 2008-07-25  Mark Probst  <mark.probst@gmail.com>
3569
3570         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
3571         code, patch calls to icalls, too, even if they're not in the
3572         shared generic code hash.  Fixes #411962.
3573
3574 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3575
3576         * cpu-x86.md: Increase the length of the fcall opcodes.
3577
3578         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
3579         calls returning floats.
3580
3581         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
3582         on NEWARR.
3583         
3584         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
3585         missed earlier.
3586
3587         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
3588         into the domain->method_code_hash.
3589
3590         * aot-compiler.c: Fix win32 build.
3591
3592         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
3593         
3594         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
3595         gshared NEWARR implementation.
3596
3597         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
3598
3599         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
3600         can be used outside of method_to_ir.
3601
3602         * mini.h (MonoCompile): Add arg_types field.
3603
3604         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
3605         
3606         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
3607         the values of the local arg_array and param_types array.
3608
3609 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3610
3611         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
3612         got accesses might only get generated later when NEWOBJ is decomposed.
3613         
3614         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
3615         looking up the native code of the target method when a delegate is called
3616         for the first time.
3617
3618         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
3619         optimization.
3620
3621         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
3622
3623         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
3624         AOT work on platforms without a working dlsym implementation.
3625
3626         * mini.h: Bump AOT image format version.
3627         
3628 2008-07-24  Mark Probst  <mark.probst@gmail.com>
3629
3630         * mini-exceptions.c: Free a MonoType with
3631         mono_metadata_free_type() instead of g_free().
3632
3633         * aot-runtime.c: Free a MonoType.
3634
3635 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3636
3637         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
3638         optimization.
3639
3640         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
3641         fp stack on x86.
3642
3643 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
3644         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
3645         profiler hook.
3646
3647 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3648
3649         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
3650         NEWOBJ calls on valuetypes.
3651
3652         * iltests.il.in: Add new test.
3653
3654         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
3655
3656 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3657
3658         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
3659         is no longer needed.
3660
3661         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
3662         non register sized integer arguments.
3663         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
3664         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
3665         emit_memcpy2 ().
3666
3667         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
3668         CEE_MONO_RETOBJ.
3669         
3670         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
3671         two a binop with different sized arguments is emitted.
3672
3673         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
3674         instruction in the ins==NULL case.
3675
3676 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3677
3678         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
3679
3680         * mini-x86.c: Fix osx build.
3681
3682         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
3683         opcodes as well.
3684
3685         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
3686         instruction for non int sized variables.
3687
3688         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
3689         implementation.
3690
3691 2008-07-23  Robert Jordan  <robertj@gmx.net>
3692
3693         * method-to-ir.c: Fix MSVC build.
3694
3695 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3696
3697         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
3698         a non int sized type, widen it to an int since newer versions of gcc seem to
3699         generate code which needs this.
3700
3701         * ssa2.c abcremoval2.c: Fix warnings.
3702
3703         * *: Merge the Linear IR branch.
3704
3705         The original branch is at trunk/branches/vargaz/mini-linear-il, and
3706         the ChangeLog file there describes all the changes done over the years. 
3707         Further documentation can be found at www.mono-project.com/Linear_IL.
3708
3709 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3710
3711         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3712           The float param registers and other param registers must be the 
3713           same index on Windows x64.
3714
3715         Contributed under MIT/X11 license.
3716
3717 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
3718
3719         * mini.c: Make the previous fix GC safe.
3720
3721 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
3722
3723         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
3724
3725 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3726
3727         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
3728           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
3729           ArgValuetypeAddrInIReg instead.
3730
3731         Contributed under MIT/X11 license.
3732
3733 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
3734
3735         * mini-codegen.c (get_register_spilling): Fix a warning.
3736
3737 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
3738
3739         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
3740         for types which the initialization fails. Raises the provided exception
3741         at the right stop after cleanup.
3742
3743 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
3744
3745         * aot-compiler.c: Free most of the memory allocated during compilation.
3746
3747         * mini.c (mini_parse_debug_options): Fix a leak.
3748         
3749         * mini.c (mini_method_compile): Don't add the method to the jit info tables
3750         during aot compilation.
3751
3752 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
3753
3754         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
3755         it has too much register pressure.
3756
3757 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
3758
3759         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
3760
3761 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3762
3763         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3764         on x86.
3765
3766         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3767         on amd64 similar to the way it is done on arm.
3768
3769         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3770
3771         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
3772         consistency, normalize error messages, avoid loading aot-only modules in
3773         normal mode.
3774
3775         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
3776         for consistency.
3777
3778         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
3779
3780 2008-07-11  Martin Baulig  <martin@ximian.com>
3781
3782         * debug-debugger.h
3783         (MonoDebuggerInfo): Add `interruption_request'.
3784
3785 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3786
3787         * aot-compiler.c (emit_plt): Remove some dead code.
3788
3789         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
3790
3791         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
3792         return the plt info offset belonging to a given plt entry.
3793
3794         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
3795         mono_aot_get_plt_info_offset.
3796         
3797         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
3798         similar to the amd64 code by makeing jumps through a separate jump table 
3799         instead of embedding the jump addresses into the code.
3800
3801 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
3802
3803         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
3804         method.
3805
3806 2008-07-10  Martin Baulig  <martin@ximian.com>
3807
3808         * mini.c (mini_method_compile): Disable generics sharing when
3809         running in the debugger.
3810
3811 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3812
3813         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
3814
3815         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
3816         the local register allocator from running out of registers on x86 when 
3817         using aot.
3818
3819 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
3820
3821         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
3822         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
3823         C4146.
3824
3825         Contributed under MIT/X11 license.
3826
3827 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3828
3829         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
3830         speed up the assembler.
3831
3832 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3833
3834         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
3835         support.
3836
3837         * mini.c: Move the soft float handling macros a bit earlier, add 
3838         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
3839         place.
3840
3841         * mini.h: Add prototype for mono_arch_fixup_jinfo.
3842
3843         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
3844         read-only to help catch code allocation requests.
3845         
3846         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
3847         and turn it off when using --aot-only or when compiling with --aot=full.
3848
3849         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
3850         jump table for switches from the normal domain mempool, not the code
3851         manager.
3852
3853         * mini-trampolines.c (get_unbox_trampoline): New function to return an
3854         unbox trampoline which handles aot-only mode too.
3855
3856         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
3857         an AOTed unbox trampoline.
3858
3859         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
3860
3861 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3862
3863         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
3864         ""
3865
3866         Contributed under MIT/X11 license.
3867
3868 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3869
3870         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
3871           the unwind information for the method at the end of the allocated block.
3872           
3873         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
3874           MonoCompileArch to hold the unwind info for SEH on Winx64
3875         
3876         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
3877           frame pointer info for the method being compiled.
3878           
3879         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
3880           the call to mono_exception_from_token.
3881           
3882         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
3883           storing the method prolog information in a format that the Winx64 SEH can understand.  This
3884           information is stored a the end of the method block because it is all 32-bit offset based.
3885
3886         Contributed under MIT/X11 license.
3887
3888 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3889
3890         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
3891
3892         * wapihandles.c: Fix warnings.
3893
3894         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
3895         mode.
3896
3897         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
3898         mono_jit_compile_method in aot-only mode since that calls the type 
3899         initializer.
3900         
3901         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
3902         get_delegate_invoke_impl in aot-only mode.
3903
3904         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
3905
3906 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
3907
3908         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
3909
3910         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
3911         is on by default.
3912
3913         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
3914
3915         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
3916         init trampoline from the AOT file as well.
3917
3918         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
3919         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
3920         code.
3921
3922         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
3923         mono_init.
3924
3925         * exceptions-amd64.c: Add _full variants for the remaining exception code
3926         creation functions as well, allow emission of relocatable code, remove
3927         caching since that is now done by the caller.
3928
3929         * mini-exceptions.c: Add _full variants for the remaining exception code
3930         creation functions as well, add aot-only support.
3931
3932         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
3933         if we can determine a proper token for them.
3934         (add_wrappers): Add a few more wrappers.
3935         (emit_method_code): Remove some dead code.
3936         (emit_trampolines): Emit exception code too.
3937
3938         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
3939
3940         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
3941         mono_array_new_va which avoids varargs.
3942
3943         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
3944
3945         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
3946         mono_arch_create_specific_trampoline () in all places.
3947
3948         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
3949         a bit so it can be used for other things as well.
3950         
3951         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
3952         on demand as well.
3953
3954         * exceptions-amd64.c: Rename the caching from the exception code creation
3955         functions, it is done by the caller instead.
3956         
3957         * exceptions-amd64.c: Change the signature of the exception code creation 
3958         functions to allow the creation of relocatable code later.
3959
3960         * mini-exceptions.c: Add a set of functions to query the various 
3961         runtime-generated exception functions.
3962
3963         * mini.c mini-exceptions.c: Use the newly added functions instead of the
3964         mono_arch_.. () functions.
3965         
3966 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3967
3968         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
3969
3970         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
3971
3972         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
3973         (mini_get_vtable_trampoline): Ditto.
3974
3975         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
3976         code in the AOT case by returning the code size and a list of relocations to
3977         the caller.
3978
3979         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
3980
3981 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
3982
3983         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
3984           clean the stack.
3985
3986         Contributed under MIT/X11 license.
3987
3988 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3989
3990         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
3991         so the buffer size can be computed correctly. Fixes #404735.
3992
3993         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
3994         normally as cfg->debug_info is already freed.
3995
3996 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
3997
3998         * mini-amd64.c: For calls returning vtypes in registers, don't store
3999         the return address on the stack, instead allocate a separate local for
4000         it. Fixes #404729.
4001
4002 2008-07-05  Mark Probst  <mark.probst@gmail.com>
4003
4004         * mini-trampolines.c, mini.h: Add an argument to
4005         mono_create_jit_trampoline_in_domain() for turning off the adding
4006         of the sync wrapper.
4007
4008         * mini.c: Use the JIT trampoline without sync instead of
4009         ldftn_nosync in static RGCTX invoke wrappers so that the call can
4010         be patched.
4011
4012 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4013
4014         * driver.c: Turn on GSHARED optimization by default.
4015
4016 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
4017
4018         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
4019         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
4020
4021         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
4022         create a variant of the generic trampoline code callable from AOTed trampolines.
4023
4024         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
4025         trampoline code callable from AOTed trampolines.
4026
4027         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
4028
4029 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4030
4031         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
4032         pass-through manner.
4033
4034         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
4035         and don't fail sharing for them anymore.
4036
4037         * mini-exceptions.c: Handle exceptions in shared generic methods.
4038
4039         * generic-sharing.c: When checking the context of a generic
4040         method, also check its class's context.  Don't treat wrappers as
4041         sharable.
4042
4043         * mini-trampolines.c: Some code factored out to
4044         metadata/generic-sharing.c.  Handle the MRGCTX case.
4045
4046         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
4047         we must deal with the method being of another instantiation of the
4048         class.  Add static rgctx invoke wrappers to generic methods.
4049
4050 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4051
4052         * mini.c: Provide all jit infos of generic shared methods with a
4053         generic jit info.
4054
4055         * mini-exceptions.c: Handle the new situation that a generic info
4056         might be available, but not info about the this/vtable/mrgctx
4057         variable.
4058
4059 2008-07-03  Mark Probst  <mark.probst@gmail.com>
4060
4061         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
4062         generic methods.
4063
4064 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
4065
4066         * dominators.c (check_dominance_frontier): Fix a warning.
4067
4068         * mini.h: Add some missing prototypes.
4069
4070         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
4071
4072         * driver.c (mono_jit_init_version): Correct the comments since the first
4073         argument should be the name of the root domain, not a filename.
4074
4075         * aot-runtime.c (make_writable): Error out if this is called while running
4076         with --aot-only.
4077         (load_aot_module): Ditto.
4078
4079         * aot-compiler.c: Really fix the computation of method indexes.
4080
4081         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
4082         optimizations as this is no longer called frequently.
4083
4084         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
4085         method and the invoke impl code and pass it to the delegate trampoline instead of
4086         just the delegate class.
4087
4088 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4089
4090         * aot-compiler.c: Fixup the computation of method indexes.
4091         (add_wrappers): Create the base methods of the runtime invoke wrappers using
4092         the method builder infrastructure.
4093
4094         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
4095         has no header.
4096
4097         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
4098         mode, load the method right away instead of creating a trampoline.
4099
4100         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
4101
4102         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
4103         some checks a bit.
4104
4105 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4106
4107         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
4108         (mono_aot_load_method): Use method_index instead of method->token.
4109
4110         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
4111         can handle icalls etc. properly.
4112
4113         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4114
4115         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
4116
4117         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
4118         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
4119         JIT_ICALL_ADDR patch type.
4120
4121         * patch-info.h: Add JIT_ICALL_ADDR patch type.
4122
4123         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
4124         request flag.
4125         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
4126
4127         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
4128
4129 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4130
4131         * mini.c: Use domain->jit_code_hash_lock for controlling access to
4132         domain->jit_code_hash.
4133
4134 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
4135
4136         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
4137
4138 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
4139
4140         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
4141         get_this_arg_from_call, let it compute it when needed.
4142
4143         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
4144         gsctx from code only when needed.
4145
4146         * mini-trampolines.c (get_generic_context): Rename this to 
4147         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
4148         it can be called by the arch backends.
4149
4150         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
4151
4152 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
4153
4154         * driver.c (mono_main): Add experimental --aot-only command line option.
4155
4156         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
4157         set.
4158
4159 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4160
4161         * driver.c (DllMain): Remove mono_module_handle.
4162
4163         Contributed under MIT/X11 license.
4164
4165 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
4166
4167         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
4168         for emitting methods which are not in the source assembly. Detect and report
4169         failure of assembling+linking.
4170         
4171         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
4172
4173         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
4174
4175 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
4176
4177         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
4178
4179 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
4180
4181         * mini.h: Remove some obsolete prototypes.
4182
4183         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
4184
4185 2008-06-24  Mark Probst  <mark.probst@gmail.com>
4186
4187         * mini.c (get_object_generic_inst): Variable-sized arrays are not
4188         supported by Visual Studio, so use alloca().
4189
4190 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
4191
4192         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
4193         Fixes #402585.
4194
4195 2008-06-23  Mark Probst  <mark.probst@gmail.com>
4196
4197         * mini.c: Fail sharing of a generic method if it contains an open
4198         catch clause (because we don't pass MRGCTXs yet).
4199
4200 2008-06-23  Mark Probst  <mark.probst@gmail.com>
4201
4202         * mini.c: When compiling a method with generic sharing, insert the
4203         method instantiated with an all-Object generic context into the
4204         jit info table, instead of the context of the first instantiation
4205         of the method we happen to compile.
4206
4207 2008-06-18  Martin Baulig  <martin@ximian.com>
4208
4209         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
4210         `major_version' and `minor_version'.
4211
4212 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4213
4214         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
4215         mono_method_is_generic_sharable_impl() takes an additional
4216         argument specifying whether to treat type variables as reference
4217         types.
4218
4219 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4220
4221         * mini.h: Removed obsolete prototypes.
4222
4223 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4224
4225         * mini.c: Don't fail generic sharing for initobj and sizeof - we
4226         already handle them.
4227
4228 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4229
4230         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
4231         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
4232         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
4233         tramp-x86.c: Added a MonoGenericContext* argument to
4234         mono_arch_get_unbox_trampoline() so that it can call other
4235         functions which require it.
4236
4237 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4238
4239         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
4240         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
4241         mono_arch_get_this_arg_from_call() takes a
4242         MonoGenericSharingContext* as well.
4243
4244 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4245
4246         * mini.c: Factor out code for emitting unbox into emit_unbox() and
4247         implement generic sharing of unbox.
4248
4249 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4250
4251         * mini.c: Don't compute the vtable to determine whether a field is
4252         special static, because it might not work for open types.
4253
4254 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4255
4256         * mini.c: Removed the unused token_type and token_source arguments
4257         from get_runtime_generic_context_ptr().
4258
4259 2008-06-17  Marek Habersack  <mhabersack@novell.com>
4260
4261         * mini.c (ADD_BINOP): fix the build
4262
4263 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
4264
4265         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
4266         a widening op.
4267
4268 2008-06-16  Mark Probst  <mark.probst@gmail.com>
4269
4270         * mini.h: Removed class relations enum that's not used anymore.
4271
4272 2008-06-16  Mark Probst  <mark.probst@gmail.com>
4273
4274         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
4275
4276         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
4277         the lazy fetch trampoline access code.
4278
4279 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
4280
4281         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
4282
4283 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
4284
4285         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
4286
4287         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
4288
4289         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
4290
4291 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4292
4293         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
4294         intrinsics.
4295
4296         * mini-ops.h: Add MIN/MAX_UN opcodes.
4297
4298         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
4299         intrinsics.
4300
4301         * basic-math.cs: Add more min/max tests.
4302
4303         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
4304
4305 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4306
4307         * mini.c: Small fix in the prologue of emit_castclass.
4308
4309 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4310
4311         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
4312
4313         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
4314         do not work even for unsigned types. Fixes #400014.
4315
4316         * basic-math.cs: Add regression tests for unsigned Min/Max.
4317
4318 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4319
4320         * mini.c: Added additional context_used argument to several
4321         functions, which will be needed for sharing generic methods.  Use
4322         GET_RGCTX macro wherever appropriate.  Declare only one
4323         context_used in mono_method_to_ir().
4324
4325 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4326
4327         * mini.c, generic-sharing.c: Removed generic class relations.
4328
4329         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
4330         functions due to MRGCTX changes.
4331
4332 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4333
4334         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
4335         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
4336         with calculated IMT.
4337
4338         * mini.c: Generic sharing of calls via generic interfaces.
4339
4340         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
4341         generic method with non-constant MonoGenericContext*.  Instead,
4342         the context is taken out of the method itself.
4343
4344 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4345
4346         * mini.c: Generic sharing of ldvirtftn.
4347
4348 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4349
4350         * mini.c: Generic sharing of ldftn.
4351
4352 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4353
4354         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
4355
4356 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4357
4358         * mini.c: Generic sharing of the special case of ldtoken followed
4359         by a call to GetTypeFromHandle.
4360
4361 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4362
4363         * mini.c: Generic sharing of box for nullable types.
4364
4365 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4366
4367         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
4368         are passed on the stack. Fixes #324807.
4369
4370 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
4371
4372         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
4373         for the ArgValuetypeAddrInIReg case.
4374
4375         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
4376         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
4377
4378         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
4379         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
4380         local variable and pass the local variable by reference to the called method.
4381           
4382         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
4383         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
4384
4385         Contributed under MIT/X11 license.
4386
4387 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
4388
4389         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
4390
4391         * debug-mini.c (mono_debug_print_vars): Release memory after printing
4392         everything.
4393
4394 2008-06-10  Martin Baulig  <martin@ximian.com>
4395
4396         * debug-mini.c
4397         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
4398
4399 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
4400
4401         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
4402         possible error when no arguments are passed.
4403
4404         Contributed under MIT/X11 license.
4405
4406 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
4407
4408         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
4409         where the file name is NULL.
4410
4411 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
4412
4413         * mini.c: Fix s390 build.
4414
4415 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
4416
4417         * trace.c (mono_trace_parse_options): Fix warnings.
4418
4419         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
4420
4421 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
4422
4423         * mini.c (remove_block_if_useless): Avoid printing the method name.
4424         
4425         * mini.c: Remove needless setting of ins->cil_code which is now done by 
4426         MONO_INST_NEW.
4427
4428         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
4429         LMF. Not yet used.
4430
4431         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
4432         translated code after it has been patched.
4433
4434 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
4435
4436         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
4437         avoid problems during code patching on SMP systems.
4438         (emit_call): Avoid adding a patch info which is already added by 
4439         emit_call_body.
4440         (mono_arch_emit_exceptions): Ditto.
4441
4442 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
4445         MONO_TYPE_ISSTRUCT already checks for it.
4446
4447 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
4448
4449         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
4450           structs with floats on Winx64 the float registers are not used.  
4451           The integer registers are always used..
4452         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
4453           only one register will be used and only if the size of the struct 
4454           is 1,2,4, or 8 bytes.
4455
4456         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
4457           to work for Winx64.
4458
4459         Contributed under MIT/X11 license.
4460
4461 2008-06-05  Martin Baulig  <martin@ximian.com>
4462
4463         * debug-debugger.c (debugger_lookup_class): Also call
4464         mono_class_setup_methods() here; we're only called from RTI.
4465
4466 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
4467
4468         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
4469         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
4470         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
4471         Post-process object files and add dtrace-generated object, if necessary.
4472
4473         Contributed under MIT/X11 license.
4474
4475 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4476
4477         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
4478         element class.
4479
4480         * mini.c: Generic sharing for unbox.any and castclass.
4481
4482 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4483
4484         * mini.c: Ignore tailcall prefix in shared generic code and when
4485         doing calls which require a vtable/rgctx argument.
4486
4487 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4488
4489         * mini.c: Don't free the JIT info.
4490
4491         * driver.c: Changes in the JIT info table testing code.
4492
4493 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
4494
4495         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
4496         interruption. Fix some warnings.
4497
4498         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
4499         interruption_checkpoint.
4500
4501 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
4502
4503         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
4504         from embedding applications.
4505
4506 2008-06-02  William Holmes  <billholmes54@gmail.com>
4507
4508         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
4509           reserving 32 bytes on the stack when making calls. 
4510
4511         Contributed under MIT/X11 license.
4512
4513 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
4514
4515         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
4516         the linear IL branch.
4517
4518         * driver.c: Print out more information for --version on arm.
4519
4520 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
4521
4522         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
4523         bb_exit instead, since out of line bblocks might not actually be emitted
4524         out-of-line.
4525         
4526         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
4527         maximum epilog size for out of line bblocks if tracing is enabled.
4528
4529         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
4530
4531 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
4532
4533         * arrays.cs: Regression tests for allocating arrays with negative sizes.
4534
4535 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
4536
4537         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
4538         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
4539         opcodes.
4540
4541 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
4542
4543         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
4544         the 'value' to store is a constant.
4545
4546         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
4547
4548         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
4549         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
4550
4551 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
4552
4553         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
4554         for accessing method->generic_container.
4555
4556 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
4557
4558         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
4559         
4560         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
4561
4562         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
4563
4564         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
4565         fails.
4566
4567 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
4568
4569         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
4570
4571         * mini.c: Handle the case when mono_class_vtable () fails.
4572
4573 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
4574         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
4575         the stat profiler.
4576
4577 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4578
4579         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
4580         together with domain sharing.
4581
4582 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4583
4584         * mini.c: Treat callvirts to final methods like non-virtual calls
4585         when doing generic sharing, i.e. look them up in the runtime
4586         generic context.
4587
4588 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4589
4590         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
4591         with computed types (for generic sharing).
4592
4593         * mini.c: Generic sharing for mkrefany and refanyval.
4594
4595 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
4596
4597         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
4598         possible.
4599
4600         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
4601         the generic sharing code.
4602         
4603         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
4604         when needed.
4605
4606 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4607
4608         * mini.h: Remove the declaration of mono_aot_init_vtable ().
4609
4610 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
4611
4612         * driver.c: updated copyright date
4613
4614 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4615
4616         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
4617         needed.
4618
4619 2008-05-19  Martin Baulig  <martin@ximian.com>
4620
4621         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
4622         pointing to the new `_mono_debug_using_mono_debugger' variable.
4623
4624         * driver.c
4625         (mono_main): Check mono_debug_using_mono_debugger() rather than
4626         the `MONO_INSIDE_MDB' environment variable to check whether we're
4627         inside the debugger.
4628
4629 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
4630
4631         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
4632         argument.
4633
4634 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4635
4636         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
4637
4638         * mini.c: Added mini_assembly_can_skip_verification. This
4639         function checks if the assembly requested to skip verification. 
4640         Fixes part of #387274.
4641
4642 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
4643
4644         * mini.c (mini_get_method): Disable the check for open generic classes when
4645         using generic sharing.
4646
4647         * generics.cs: Add a test for #387034.
4648
4649         * mini.c (mini_get_method): Check whenever the method class is an open generic
4650         type, and return NULL in that case, causing a verification error. Fixes
4651         #384123.
4652
4653 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4654
4655         * driver.c (mono_main): Revert r102623. The right
4656         thing to do is to enable the verifier under verifiable
4657         unless a --security flag was passed.
4658
4659         We need this non-trivial behavior for --verify-all otherwise
4660         mcs-compileall won't be able to use it. As it needs everything to
4661         be verified under validil.
4662
4663 2008-05-06  Martin Baulig  <martin@ximian.com>
4664
4665         Fix #383749.
4666
4667         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
4668         (mono_debugger_thread_cleanup): Likewise.
4669         (mono_debugger_extended_notification): Likewise.
4670
4671 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4672
4673         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
4674         against both inflated and non-inflated methods. We need to check against the
4675         generic definition for cases where the instantiated method is not visible.
4676         We need to check against the inflated types for cases where the instantiation
4677         changes any super type. This fixes #382986.
4678
4679         Note that this doesn't need to be applied to other parts of mono_method_to_ir
4680         that check for visibiliy as generic params only appears as the type subject
4681         of tokens on call opcodes. Field manipulation and ldftn must always
4682         target an exact type.
4683
4684 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4685
4686         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
4687         if no related --security flag is passed.
4688
4689 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4690
4691         * mini-arch.h: Prepare support for ppc64.
4692
4693         Contributed under MIT/X11 license.
4694
4695 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4696
4697         * aot-runtime.c: Prepare support for ppc64.
4698
4699         Contributed under MIT/X11 license.
4700
4701 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4702
4703         * mini-ops.h: Prepare support for ppc64.
4704
4705         Contributed under MIT/X11 license.
4706
4707 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
4708
4709         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
4710
4711         Contributed under MIT/X11 license.
4712
4713 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
4714
4715         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
4716         assemblies, since aot_name is not a full path, causing us to load MS.NET 
4717         assemblies on windows.
4718
4719 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
4720
4721         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
4722         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
4723         * main.c: Use UTF-8 encoded command line instead of Windows default code
4724         page on Windows to support Unicode.
4725         * driver.c (DllMain): New function for mixed-mode assembly support.
4726         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
4727         export __stdcall functions without decoration.
4728
4729         Contributed under MIT/X11 license.
4730
4731 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4732
4733         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
4734         saving it very early.
4735
4736 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4737
4738         * mini.h, mini.c: Lots of code for accessing the old RGCTX
4739         deleted.  The only way to access the new RGCTX is via the
4740         trampline.
4741
4742         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
4743         vtable instead of the RGCTX to static methods.
4744
4745         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
4746         accessing the new RGCTX.
4747
4748         * generic-sharing.c: There is no separation between self, type
4749         arguments and other types in the RGCTX anymore.
4750
4751 2008-04-25  Jonathan Chambers <joncham@gmail.com>
4752
4753         * mini-amd64.c (add_general): Remove previous stack adjustment.
4754         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
4755         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
4756         for 32 bytes of stack space reserved for all calls.
4757         
4758         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
4759         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
4760         adjustment.
4761         
4762         Code contributed under MIT/X11 license.
4763
4764 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
4765
4766         * mini.c (mini_method_verify): Only verify non-inflated methods, check
4767         against the root definition, peeling out method and type instantiations.
4768         Cache verify success results, code that fails verification is still
4769         checked multiple times.
4770
4771 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
4772
4773         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
4774
4775 2008-04-23  Jonathan Chambers <joncham@gmail.com>
4776
4777         * mini-amd64.c (add_general): Always increment stack on Win64.
4778         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
4779         on Win64.
4780         
4781         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
4782         stack based argument handling on Win64.
4783         
4784         Code contributed under MIT/X11 license.
4785
4786 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
4787
4788         * Makefile.am (version.h): Add support for git-svn.
4789
4790 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
4791
4792         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
4793         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
4794         avoiding allocations and libc functions which might deadlock.
4795         
4796         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
4797         'no-gdb-backtrace' option is set.
4798
4799         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
4800
4801         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
4802
4803 2008-04-21  Martin Baulig  <martin@ximian.com>
4804
4805         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
4806         and `get_lmf_addr'; `notification_address' is no longer a pointer.
4807
4808 2008-04-21  Martin Baulig  <martin@ximian.com>
4809
4810         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
4811         `thread_vtable', `event_handler_ptr' and `event_handler'.
4812
4813 2008-04-21  Martin Baulig  <martin@ximian.com>
4814
4815         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
4816         allows delayed initialization of the `executable_code_buffer' when
4817         attaching.
4818
4819 2008-04-21  Martin Baulig  <martin@ximian.com>
4820
4821         * mini.h (mono_debugger_create_notification_function): Removed.
4822         * tramp-*.c (mono_debugger_create_notification_function): Removed.
4823
4824         * mdb-debug-info64.s
4825         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4826
4827         * mdb-debug-info32.s
4828         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4829
4830         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
4831         currently only works on x86 and x86_64, so don't create it on ppc.
4832
4833 2008-04-21  Martin Baulig  <martin@ximian.com>
4834
4835         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
4836
4837         * mini.c
4838         (mini_method_compile): In the fp elimination check, check
4839         `debug_options.mdb_optimizations' in addition to
4840         mono_debug_using_mono_debugger().       
4841
4842         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
4843         disable some JIT optimizations which are only disabled when
4844         running inside the debugger.
4845         Added `--help-debug' option to describe the debugging options.
4846         (parse_debug_options): New static function to parse the `--debug'
4847         options, so we can easily add more stuff in future.
4848
4849 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
4850
4851         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
4852         the method has no body.
4853
4854 2008-04-19  Jonathan Chambers <joncham@gmail.com>
4855
4856         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
4857         assembly is not allowed in MSVC 64-bit compiler. 
4858         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
4859         as we get floating point exceptions everywhere.
4860         
4861         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
4862         correctly align arguments for call to throw_exception.
4863         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
4864         
4865         Code contributed under MIT/X11 license.
4866
4867 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
4868
4869         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
4870
4871 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
4872
4873         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
4874
4875         * mini-amd64.c (NEW_INS): Set cil_code.
4876
4877         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
4878         from mini-amd64.c so all debugger related logic is in one place.
4879
4880         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
4881         later won't have a random ip assigned to them.
4882
4883 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
4884
4885         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
4886         the arch specific function initializes code_size.
4887         (mono_create_delegate_trampoline): Ditto.
4888
4889         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
4890         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
4891         platforms.
4892
4893         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
4894         running under the debugger.
4895
4896         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
4897         debugger.
4898
4899         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
4900         debugger. Also move the disabling of optimizations here from driver.c.
4901         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
4902         debugger.
4903
4904         * mini.h (MonoCompile): Add a few new flags.
4905
4906 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
4907
4908         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
4909         so the cil_code field of created MonoInst's is properly set.
4910         (mini_select_instructions): Ditto.
4911
4912         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
4913         (MONO_INST_NEW_CALL): Ditto.
4914
4915         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
4916         in many places so the ins->cil_code field is properly initialized.
4917
4918         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
4919         place.
4920
4921 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
4922
4923         * mini.c (mini_method_compile): Print a different message when compiling a 
4924         shared method.
4925         
4926         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
4927         > 1.
4928
4929 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4930
4931         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
4932         SSE2 instructions.
4933
4934         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
4935         
4936 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4937
4938         * mini.c (handle_stack_args): Make this return void since its return value was
4939         never used. Also set cfg->unverifiable for invalid IL instead of calling
4940         G_BREAKPOINT ().
4941
4942 2008-04-10  Mark Probst  <mark.probst@gmail.com>
4943
4944         * mini.c: Make sure "this" is live in catch clauses with type
4945         variables in shared generic code.
4946
4947 2008-04-08  Mark Probst  <mark.probst@gmail.com>
4948
4949         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
4950         generic_class_is_reference_type() to ensure the proper behaviour
4951         when sharing generic code and the type in question is a type
4952         argument.
4953
4954 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4955
4956         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
4957         race conditions when printing thread dumps. Fixes #377738.
4958
4959 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
4960         
4961         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
4962         shows up when both MonoInst arguments can cause aliasig.
4963         There is likely no way in the current JIT to trigger this problem, but
4964         it showed up in the development of generics sharing, when in a new
4965         opcode both args of an OP_GROUP can be aliases (addresses of a local).
4966         When the generics sharing code will be committed, its tests will be
4967         valid also for this bug.
4968
4969 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4970
4971         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
4972         PATCH_INFO_METHOD.
4973
4974         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
4975         NULL.
4976
4977 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
4978
4979         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
4980         use a more detailed exception message for InvalidCastException.
4981
4982         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
4983
4984         * driver.c (mono_main): Add --debug=casts option to turn on better 
4985         InvalidCastException message details.
4986
4987         * mini.c (mini_get_debug_options): New helper function to return the address of
4988         the debug_options variable.
4989
4990         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
4991         the jit_tls TLS variable.
4992
4993         * mini.c (mono_jit_tls): New TLS variable.
4994
4995         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
4996         option is used.
4997
4998 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
4999
5000         * mini.h: Removed verifer related stuff. This code was moved to verify.c
5001
5002         * mini.c: Removed verifer related stuff, code moved to verify.c.
5003
5004         * driver.c: Using code from verify.c instead of mini.c.
5005
5006 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
5007
5008         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
5009         longer valid.
5010
5011 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
5012
5013         * mini.c (check_for_method_verify): Enabling verification of
5014         corlib if mono_verify_all is set. Bugs in the verifier preventing that
5015         have been fixed.
5016
5017 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
5018
5019         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
5020         caller saved registers as well.
5021         
5022         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
5023         saved registers as well.
5024
5025 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
5026
5027         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
5028
5029         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
5030         code.
5031
5032 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
5033
5034         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
5035         to get_call_info.
5036         (get_call_info): Take a gsctx argument instead of 'cfg'.
5037
5038 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
5039
5040         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
5041         mono_verify_all is set.
5042
5043         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
5044
5045         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
5046
5047 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
5048
5049         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
5050         an exception.
5051
5052         * driver.c mini.c mini.h: Add a --verify-all development option to test the
5053         verifier and the code generated by the compiler.
5054
5055 2008-03-25  Mark Probst  <mark.probst@gmail.com>
5056
5057         * mini.c: Generic sharing of the non-nullable case of the box
5058         instruction.
5059
5060 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
5061
5062         * inssel.brg: Fix the build.
5063
5064         * iltests.il.in: Add a test for lconv.ovf.u8.un.
5065
5066 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
5067
5068         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
5069         Array:Address. Fixes #372410.
5070
5071         * iltests.il.in: New tests for readonly prefix.
5072
5073 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
5074
5075         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
5076         mini-trampolines.c.
5077
5078         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
5079         mini-exceptions.c.
5080
5081         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
5082         
5083         * mini.c (mono_decompose_op_imm): New helper function.
5084
5085         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
5086         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
5087         return value.
5088
5089         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
5090         mono_arch_output_basic_block. Fix warnings.
5091
5092         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
5093         for now.
5094
5095 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
5096
5097         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
5098         since the extra frame is now detected automatically inside the loop.
5099
5100         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
5101         opts which are now in mono_peephole_ins ().
5102         
5103         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
5104
5105         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
5106         frames and skip duplicate managed-to-native frames. Fixes #367665.
5107
5108         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
5109         opts which are now in mono_peephole_ins ().
5110         (mono_arch_peephole_pass_2): Ditto.
5111
5112         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
5113
5114         * mini-codegen.c (mono_peephole_ins): New helper function containing the
5115         arch independent peephole optimizations.
5116
5117         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
5118         opts which are now in mono_peephole_ins ().
5119
5120         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
5121         
5122         * mini-s390.c (mono_arch_output_basic_block): Fix build.
5123
5124         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
5125         pattern.
5126
5127         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
5128         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
5129         opcode. 
5130
5131 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
5132
5133         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
5134         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
5135         return value.
5136
5137         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
5138         mono_arch_output_basic_block. Fix warnings.
5139
5140 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5141
5142         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
5143         conv.ovf.u.un.
5144
5145 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5146
5147         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
5148         conv.ovf.u.un.
5149
5150         * iltests.il: Add new tests.
5151
5152 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
5153
5154         * mini.c: Removed Windows version macros.
5155
5156 2008-03-20  Mark Probst  <mark.probst@gmail.com>
5157
5158         * generic-sharing.c: Put reflection types in the extensible part
5159         of the runtime generic context.
5160
5161         * mini.c: Generic sharing of the GetTypeHandle special case of the
5162         ldtoken instruction.
5163
5164 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5165
5166         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
5167
5168         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
5169         
5170         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
5171         consistency with the other version on the linear IR branch.
5172
5173         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
5174
5175         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
5176
5177         * iltests.il.in: Add new tests.
5178
5179 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
5180
5181         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
5182
5183         * iltests.il.in: Add new tests.
5184
5185 2008-03-19  Mark Probst  <mark.probst@gmail.com>
5186
5187         * mini.c: Two variables with the same name were declared in
5188         nesting contexts and one wasn't initialized.  Fixed.
5189
5190 2008-03-19  Mark Probst  <mark.probst@gmail.com>
5191
5192         * mini.c: Generic sharing of the initobj instruction.
5193
5194 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
5195
5196         * mini.c: make the test to optimize ldtoken from typeof() more
5197         precise.
5198
5199 2008-03-18  Mark Probst  <mark.probst@gmail.com>
5200
5201         * mini.c: Generic sharing of the initobj instruction for reference
5202         types.
5203
5204 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5205
5206         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
5207         the mono_breakpoint_clean_code() code to perform bound checks.
5208
5209 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
5210
5211         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
5212         mono_arch_patch_callsite() to include the start of the managed method
5213         to be able to perform bound checks.
5214
5215 2008-03-17  Mark Probst  <mark.probst@gmail.com>
5216
5217         * mini.c: Generic sharing for the isinst instruction.
5218
5219 2008-03-17  Mark Probst  <mark.probst@gmail.com>
5220
5221         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
5222         inssel-long32-mips.brg: Added opcodes for doing indirect calls
5223         with the runtime generic context argument.
5224
5225         * mini.c: Share calls to several types of unsharable methods by
5226         putting the address of the method code in the runtime generic
5227         context and doing an indirect call.
5228
5229         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
5230         to switches.
5231
5232 2008-03-16  Mark Probst  <mark.probst@gmail.com>
5233
5234         * generic-sharing.c: Change due to a change in the runtime genric
5235         context API.
5236
5237 2008-03-15  Martin Baulig  <martin@ximian.com>
5238
5239         * tramp-x86.c
5240         (mono_arch_nullify_class_init_trampoline): Add call to
5241         mono_breakpoint_clean_code() to make things work when running
5242         inside the debugger.
5243
5244         * tramp-amd64.c
5245         (mono_arch_nullify_class_init_trampoline): Add call to
5246         mono_breakpoint_clean_code() to make things work when running
5247         inside the debugger.
5248
5249 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5250
5251         * inssel-long.brg (reg): Fix 64 bit build.
5252
5253 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5254
5255         * mini.c, mini.h: Share static generic code by passing it an
5256         implicit argument pointing to the runtime generic context.
5257
5258         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
5259         inssel-long32-mips.brg: New opcodes for calling shared static,
5260         which need to be passed the runtime generic context.
5261
5262         * mini-amd64.c, mini-x86.c: Save the runtime generic context
5263         argument on the stack in the prologue if needed.  New function for
5264         finding the runtime generic context argument from the registers
5265         saved by the trampoline.
5266
5267         * mini-amd64.h, mini-x86.h: Specify which register to use for the
5268         runtime generic context argument.
5269
5270         * tramp-amd64.c: Also restore the register used for the runtime
5271         generic context argument.
5272
5273         * mini-trampoline.c: Resolve shared static calls by consulting the
5274         runtime generic context via the new argument.
5275
5276         * generic-sharing.c: Add an argument to sharability-checking
5277         functions that specifies whether type variables should be treated
5278         as sharable type arguments.
5279
5280         * inssel-x86.brg: Removed a superfluous, buggy rule.
5281
5282         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
5283         to switches.
5284
5285 2008-03-14  Martin Baulig  <martin@ximian.com>
5286
5287         * debug-debugger.c (main_thread_handler): Call
5288         mono_runtime_run_main() without sending any notifications.
5289
5290         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
5291
5292 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5293
5294         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
5295
5296 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5297
5298         * tramp-x86.c: Fixed register restore offsets in the trampoline
5299         code for ECX and EDX.
5300
5301 2008-03-12  Geoff Norton  <gnorton@novell.com>
5302
5303         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
5304         different ucontext_t implementations.
5305         * exceptions-arm.c: Use the above defines to get exceptions working on 
5306         iPhone (based on a patch by Luke Howard lukeh@padl.com)
5307         * mini-arm.c: Implement iPhone icache support (based on a patch by
5308         Luke Howard lukeh@padl.com)
5309
5310 2008-03-12  Mark Probst  <mark.probst@gmail.com>
5311
5312         * mini.c: Enable generic sharing of calls to non-static
5313         non-interface non-generic non-value-type methods.
5314
5315         * mini-trampolines.c: Resolve calls from shared generic code.
5316
5317 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
5318
5319         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
5320
5321         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
5322
5323 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
5324
5325         * mini.c: some fixes for the AOT compiler.
5326
5327 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5328
5329         * cpu-amd64.md: Add clob:1 to some float opcodes.
5330
5331 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
5332
5333         * mini.h: Added MiniVerifierMode enumeration.
5334
5335         * mini.c: Added mini_verifier_set_mode to control
5336         the usage of the new verifier.
5337
5338         * mini.c (mono_method): Integrated the new verifier.
5339
5340         * driver.c: Extended --security option with validil and
5341         verifiable options to activate the new verifier.
5342
5343 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5344
5345         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
5346         optimization to ctors taking 0 or 2 arguments too.
5347
5348         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
5349         a bit.
5350
5351         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
5352
5353         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
5354
5355 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
5356
5357         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
5358         non-aot case as well.
5359
5360         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
5361
5362         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
5363         changes.
5364
5365         * aot-compiler.c (encode_patch): Ditto.
5366
5367         * mini.h (G_MININT32): Fix the definition of this.
5368
5369 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
5370
5371         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
5372
5373         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
5374
5375 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5376
5377         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
5378         methods returning vtypes in registers.
5379         (mono_arch_allocate_vars): Ditto.
5380
5381         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
5382
5383         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
5384
5385         * generics.cs: Add a test from the linear IR branch.
5386
5387         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
5388
5389         * mini.c (inline_method): Cache failed inline attempts.
5390
5391 2008-03-04  Mark Probst  <mark.probst@gmail.com>
5392
5393         * mini.c: For shared methods of generic classes put the location
5394         of "this" into the MonoGenericJitInfo.
5395
5396         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
5397         register out of a MonoContext by register number.  Add the generic
5398         sharing context as an argument to mono_arch_find_this_argument().
5399
5400         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5401         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
5402         for new arch function.
5403
5404         * mini-exception.c: Handle open exception clauses in shared
5405         generic code.
5406
5407         * mini-trampolines.c: Supply additional argument to
5408         mono_arch_find_this_argument().
5409
5410 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5411
5412         * Makefile.am (regtests): Run the bench.exe tests last.
5413
5414 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
5415
5416         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
5417         a bit.
5418
5419 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
5420
5421         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
5422         with MS.
5423
5424         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
5425         
5426         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
5427
5428         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
5429         whose class has no cctor.
5430
5431         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
5432
5433 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
5434
5435         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
5436         unverified.
5437
5438 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
5439
5440         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
5441         to be in sync with the code on the linear IR branch.
5442
5443         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
5444
5445         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
5446
5447 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
5448
5449         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
5450
5451         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
5452
5453         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
5454
5455         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
5456
5457         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
5458         
5459         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
5460         body.
5461
5462 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
5463
5464         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
5465         OP_LOADR4_MEMBASE emission.
5466
5467         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
5468         (mono_spillvar_offset_float): Ditto.
5469
5470         * mini-mips.c (mono_arch_emit_prolog): Ditto.
5471
5472         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
5473         emission.
5474
5475         * basic-long.cs: Add regression tests for them.
5476
5477         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
5478         use.
5479         (mono_arch_allocate_vars): Fix representation of single-precision float
5480         argument.
5481         (mono_arch_output_basic_block): Ditto.
5482
5483         * inssel-mips.brg: Ditto, remove duplicate items.
5484
5485         * mini-mips.c (emit_load_volatile_arguments): New function to handle
5486         arguments of tail calls as on other platforms.
5487         (mono_arch_output_basic_block): Handle tail calls.
5488
5489         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
5490         register.
5491
5492         * objects.cs (test_5_pass_static_struct): Add test for it.
5493
5494         Contributed under MIT/X11 license.
5495
5496 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
5497
5498         * Makefile.am: Use gmcs for compiling the regression tests.
5499
5500         * *.2.cs *.2.il: Rename to *.cs and *.il.
5501
5502 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
5503
5504         * regalloc.h: Make the vassign array smaller.
5505
5506         * mini.c (mini_method_compile): Remove an unused field in cfg.
5507
5508         * mini-codegen.c: Add a bunch of micro optimizations.
5509
5510 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
5511
5512         * regalloc.h: Remove some unused fields.
5513
5514 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
5515
5516         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
5517
5518         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
5519
5520 2008-02-22  Mark Probst  <mark.probst@gmail.com>
5521
5522         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
5523
5524         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
5525         trampoline: Fetch an entry from the runtime generic context.  If
5526         it's NULL, jump to the actual trampoline to fill the runtime
5527         generic context.  Otherwise, return it.
5528
5529         * mini.c: Call the lazy fetch trampoline to get entries out of the
5530         runtime generic context.
5531
5532         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
5533         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
5534         tramp-sparc.c: Stubs for the lazy fetch trampoline.
5535
5536 2008-02-21  Mark Probst  <mark.probst@gmail.com>
5537
5538         * mini.c: Fetch data out of the extensible part of the runtime
5539         generic context instead of calling a helper function.
5540
5541         * generic-sharing.c: Some functions moved into
5542         metadata/generic-sharing.c.  Helper function for fetching other
5543         types now checks and asserts against extensible rgctx (just for
5544         debugging purposes - the helper function isn't called anymore
5545         unless for debugging).
5546
5547 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5548
5549         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
5550         for tail calls up to the point that the tests in iltests.exe run. Also add a
5551         dummy CKFINITE implementation.
5552         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
5553         needed for trampoline LMF frames.
5554
5555         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
5556         trampoline LMF frames.
5557
5558 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
5559
5560         * mini.c (inline_method): clean any pending loader error when inlining fail.
5561         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
5562
5563 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5564
5565         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
5566
5567         * aot-runtime.c (decode_patch_info): Ditto.
5568
5569         * mini.c (mono_resolve_patch_target): Ditto.
5570         
5571         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
5572         icall wrappers.
5573
5574         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
5575         
5576         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
5577         if it references an icall address.
5578
5579 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
5580
5581         * cpu-s390x.md: Remove some more unused opcodes.
5582         
5583         * cpu-s390x.md: Remove some unused opcodes.
5584
5585         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
5586         mono_op_imm_to_op ().
5587
5588         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
5589         instead of a switch statement.
5590         
5591         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
5592         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
5593
5594         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
5595         
5596         * mini-codegen.c: Remove unused mono_regstate2_... functions.
5597
5598         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
5599         -1.
5600
5601 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
5602
5603         * driver.c (mono_main): Improve error reporting when an assembly cannot be
5604         opened. Fixes #362607.
5605
5606         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
5607
5608         * iltests.il.in: Add a test for static methods in interfaces.
5609
5610 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
5611
5612         * genmdesc.c (build_table): Fix a crash on older glib versions.
5613
5614         * cpu-sparc.md: Remove some unused opcodes.
5615         
5616         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
5617         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
5618
5619         * cpu-amd64.md: Remove some unused opcodes.
5620
5621         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
5622         like the other opcodes.
5623
5624 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
5625
5626         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
5627
5628         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
5629
5630         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
5631         variables 'cfg' instead of 'm' for consistency.
5632
5633         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
5634
5635         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
5636         argument holding the vtype return address, to avoid the ambigious use of
5637         cfg->ret for this purpose.
5638
5639         * mini.c (NEW_RETLOADA): Use vret_addr if set.
5640
5641         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
5642         
5643         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
5644         new mono_print_ins () function which only takes one argument.
5645
5646 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
5647
5648         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
5649         macro arguments.
5650
5651 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
5652
5653         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
5654
5655         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
5656
5657         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
5658         opcodes and other small changes.
5659
5660         * mini-ops.h: Add some new opcodes from the linear IR branch.
5661
5662         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
5663
5664         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
5665         opcodes, use the REG_MEMBASE opcodes instead.
5666         
5667         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
5668         opcodes, use the REG_MEMBASE opcodes instead.
5669         
5670         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
5671         linear IR branch.
5672
5673         * mini.c (mono_op_imm_to_op): New helper function.
5674
5675         * mini-ops.h: Add some opcodes from linear IR branch.
5676
5677 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
5678
5679         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
5680         <tsv@solvo.ru>.
5681
5682 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
5683
5684         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
5685         OP_ICONV_TO_R4/R8.
5686
5687         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
5688
5689 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
5690
5691         * aot-compiler.c (emit_method_code): Add an assert.
5692
5693         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
5694         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
5695         methods.
5696
5697 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
5698
5699         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
5700         some load/store opcodes so they are consistent. 
5701         (mono_arch_emit_prolog): Simplify some code.
5702
5703         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
5704
5705         * objects.cs: Add tests for large argument offsets on ARM.
5706
5707         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
5708         stack offsets. Fixes #359651.
5709
5710         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
5711
5712         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
5713
5714         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
5715
5716         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
5717
5718         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
5719
5720         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
5721         rid of CEE_CONV_R_UN.
5722
5723         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
5724
5725 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
5726
5727         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
5728
5729         * mini.c (mono_normalize_opcodes): Add some more opcodes.
5730
5731         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
5732
5733         * cpu-amd64.md: Remove some unused opcodes.
5734
5735         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
5736
5737         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
5738
5739         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
5740         arch specific functions for its parts. Call the peephole pass after local
5741         regalloc so the prolog can compute a more accurate max_offset.
5742         
5743         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
5744         the corresponding OP_I/OP_L opcodes.
5745
5746         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
5747
5748         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
5749
5750 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5751
5752         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
5753         as they are handled in mini.c.
5754
5755         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
5756         
5757         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
5758         case since it is handled in mini.c.
5759
5760         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
5761
5762         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
5763
5764         * *.c: Use the new opcodes in the IR and back end code.
5765
5766         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
5767
5768         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
5769
5770 2008-02-06  Mark Probst  <mark.probst@gmail.com>
5771
5772         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
5773         an assert because it has a race condition.
5774
5775 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5776
5777         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
5778
5779         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
5780
5781         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
5782
5783         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
5784         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
5785
5786 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
5787
5788         * cpu-amd64.md (move): Correct the maximum size of move.
5789
5790 2008-02-05  Mark Probst  <mark.probst@gmail.com>
5791
5792         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
5793         the generic class init trampoline to return quickly if the class
5794         is already inited.
5795
5796 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
5797
5798         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
5799         issues where an 32 bit callsite cannot be patched by a 64 bit address.
5800
5801 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
5802
5803         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
5804         branch.
5805
5806 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
5807
5808         * objects.cs: Add some soft-float tests.
5809
5810         * mini.c: Fix a couple more soft-float issues.
5811
5812         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
5813
5814         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
5815         avoid a REX prefix.
5816
5817 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
5818
5819         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
5820         exception happens while compiling a virtual method.
5821
5822 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
5823
5824         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
5825         
5826         * mini-sparc.c: Fix build.
5827
5828         * mini-sparc.c (get_call_info): Add support for generic sharing.
5829
5830         * mini-exceptions.c: Add a FIXME.
5831
5832 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
5833
5834         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
5835         altstack handling code.
5836
5837         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
5838         
5839         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
5840
5841         * mini-s390.c: Add support for generic sharing.
5842
5843         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5844         Fix CAS on s390.
5845         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5846
5847         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
5848
5849         * mini-s390x.c: Add support for generic sharing.
5850         
5851         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5852         Fix CAS on ia64.
5853         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5854
5855         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
5856         can be used since it takes a 16 bit signed immediate.
5857
5858         * inssel-s390x.brg: Fix OP_SETRET.
5859
5860         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
5861
5862         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
5863
5864         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
5865
5866         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
5867
5868         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
5869         in one place.
5870
5871         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
5872         stuff.
5873
5874         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
5875         of the unused mono_arch_patch_delegate_trampoline stuff.
5876
5877 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
5878
5879         * basic-long.cs: Move the fp related tests to basic-float.cs.
5880
5881         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
5882
5883         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
5884
5885         * basic-calls.cs: Add a test for proper float argument passing.
5886
5887         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
5888         if the context corresponds to an exception received through a signal.
5889
5890         * exceptions.cs: Add a test for nullref handling at the start of a try
5891         clause.
5892
5893         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
5894
5895         * jit-icalls.c (mono_break): New JIT icall.
5896
5897         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
5898
5899         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
5900
5901 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
5902
5903         * cpu-*.md: Get rid of unused opcodes.
5904
5905         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
5906
5907         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
5908         by all platforms.
5909
5910         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
5911         define.
5912
5913         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
5914         the arch independent trampoline code in mini-trampolines.c.
5915
5916         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
5917
5918         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
5919
5920         * mini-s390.h: Remove an unused define.
5921         
5922         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
5923         the arch independent trampoline code in mini-trampolines.c.
5924
5925         * mini-arm.c (mono_arch_emit_prolog): Fix build.
5926
5927 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
5928
5929         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
5930
5931         * mini-s390.c (mono_arch_emit_prolog): Fix build.
5932
5933         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
5934
5935         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
5936
5937         * cpu-amd64.md: Use smaller sizes for int opcodes.
5938
5939         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
5940
5941         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
5942         objects.cs.
5943
5944         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
5945         debugging.
5946
5947         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
5948         instead of though a pointer to save an indirection when accessing elements of
5949         the array.
5950
5951         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
5952         some typos.
5953         (NOT_IMPLEMENTED): New helper macro.
5954         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
5955         of a bb.
5956
5957         * *.c: Use the new helper macro.
5958
5959 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
5960
5961         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
5962
5963 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
5964
5965         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
5966         stack slots.
5967
5968 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
5969
5970         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
5971         profiling is enabled.
5972         
5973         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
5974         the end.
5975         (mono_arch_emit_prolog): Add more first bblock optimizations.
5976
5977         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
5978         in order if possible.
5979         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
5980         bblock, since the arguments are still in their original registers.
5981
5982         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
5983
5984 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
5985
5986         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
5987         as well.
5988
5989         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
5990         offset 0.
5991
5992         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
5993
5994         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
5995         process async exceptions received while in unmanaged code.
5996
5997         * mini.c (mini_init): Install a callback with the runtime which will be called
5998         when a thread receives an async exception while in unmanaged code.
5999
6000         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
6001
6002         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
6003
6004 2008-01-16  Wade Berrier  <wberrier@novell.com>
6005
6006         * cpu-g4.md:
6007         * cpu-arm.md:
6008         * cpu-s390x.md:
6009         fix build
6010
6011 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
6012
6013         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
6014         compilation with sun cc.
6015
6016         * cpu-*.md: Fix the build.
6017
6018         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
6019
6020         * mini-amd64.h: Add some comments to the MonoLMF structure.
6021
6022         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
6023         
6024         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
6025         in the LMF structure if possible. This saves two instructions in the
6026         managed->native wrappers.
6027
6028         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
6029
6030 2008-01-16  Mark Probst  <mark.probst@gmail.com>
6031
6032         * generic-sharing.c: New type argument lookup code which uses the
6033         runtime generic context template.
6034
6035 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
6036
6037         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
6038
6039         * mini-arm.c (add_general): Fix arm eabi parameter passing.
6040         (mono_arch_output_basic_block): Fix localloc implementation.
6041
6042         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
6043
6044         * mini-ia64.c (peephole_pass): Fix ia64 build.
6045
6046         * mini-amd64.c (peephole_pass): Fix a warning.
6047         
6048         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
6049         at a constant offset from sp/fp.
6050
6051         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
6052         instead of obtaining it from *lmf in the managed method case.
6053
6054 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
6055
6056         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
6057
6058 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
6059
6060         * mini.h (MonoInstList): New type.
6061         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
6062         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
6063         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
6064         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
6065         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
6066         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
6067         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
6068         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
6069         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
6070         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
6071         MONO_INST_LIST_FOR_EACH_ENTRY,
6072         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
6073         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
6074         mono_inst_list_first, mono_inst_list_last,
6075         mono_inst_list_next, mono_inst_list_prev): New instruction
6076         list handling interfaces.
6077         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
6078         list head 'ins_list'.
6079         (MonoInst): Replace next pointer with list head 'node'.
6080         (MonoCallInst): Make 'out_args' a MonoInstList.
6081         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
6082         (MonoCompile): Delete reverse_inst_list and
6083         reverse_inst_list_len.
6084         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
6085         mono_arch_lowering_pass, mono_arch_local_regalloc,
6086         mono_arch_output_basic_block, mono_arch_emit_prolog):
6087         Convert to new instruction lists.
6088         (insert_after_ins): Delete.
6089         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
6090         instruction lists.
6091         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
6092         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
6093         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
6094         mono_emulate_opcode, mono_emit_load_got_addr,
6095         inline_method, mono_method_to_ir, mono_print_bb_code,
6096         print_dfn, decompose_pass, nullify_basic_block,
6097         replace_out_block_in_code, remove_block_if_useless,
6098         merge_basic_blocks, move_basic_block_to_end,
6099         try_unsigned_compare, optimize_branches, mono_print_code,
6100         mini_select_instructions, remove_critical_edges): Likewise.
6101         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
6102         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
6103         mono_arch_output_basic_block, mono_arch_emit_prolog):
6104         Likewise.
6105         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
6106         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6107         mono_arch_output_basic_block): Likewise.
6108         (inst_list_prepend, insert_after_ins): Delete.
6109         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
6110         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
6111         instruction lists.
6112         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
6113         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
6114         mono_arch_emit_prolog): Likewise.
6115         * cfold.c (mono_constant_fold): Likewise.
6116         * liveness.c (visit_bb, mono_analyze_liveness,
6117         optimize_initlocals): Likewise.
6118         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
6119         * graph.c (mono_draw_code_cfg): Likewise.
6120         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
6121         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
6122         mono_ssa_cprop): Likewise.
6123         * abcremoval (get_relations_from_previous_bb, process_block):
6124         Likewise.
6125         * local-propagation (mono_cprop_invalidate_values,
6126         mono_local_cprop_bb): Likewise.
6127         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
6128         peephole_pass, mono_arch_output_basic_block,
6129         mono_arch_emit_prolog): Likewise.
6130         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
6131         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6132         mono_arch_emit_prolog): Likewise.
6133         (insert_after_ins): Delete.
6134         * aliasing.c (print_code_with_aliasing_information,
6135         mono_build_aliasing_information, mono_aliasing_deadce):
6136         Convert to new instruction lists.
6137         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
6138         peephole_pass, NEW_INS, mono_arch_lowering_pass,
6139         mono_arch_local_regalloc, mono_arch_output_basic_block):
6140         Likewise.
6141         (insert_after_ins): Delete.
6142         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
6143         peephole_pass, mono_arch_output_basic_block): Convert to
6144         new instruction lists.
6145         * mini-codegen (InstList, inst_list_prepend,
6146         insert_after_ins): Delete.
6147         (insert_before_ins, get_register_force_spilling,
6148         get_register_spilling, free_up_ireg, free_up_reg,
6149         create_copy_ins, create_spilled_store, alloc_int_reg,
6150         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
6151         to new instruction lists.
6152         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
6153         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6154         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
6155         (insert_after_ins): Delete.
6156         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
6157         mono_arch_local_regalloc, mono_arch_output_basic_block,
6158         mono_arch_call_opcode): Convert to new instruction lists.
6159         (insert_after_ins): Delete.
6160         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
6161         peephole_pass, mono_arch_output_basic_block,
6162         mono_arch_emit_prolog): Convert to new instruction lists.
6163
6164 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
6165
6166         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
6167
6168         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
6169         Fixes #353182.
6170
6171         * Makefile.am (version.h): Make this work with non-bash shells.
6172
6173 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
6174
6175         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
6176
6177 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
6178
6179         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
6180         the InitializeArray optimization.
6181
6182 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
6183
6184         * mini.c driver.c: Don't include os/gc_wrapper.h.
6185
6186 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
6187
6188         * mini.c (print_jit_stats): Print GC statistics if available.
6189
6190 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
6191
6192         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
6193
6194 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
6195
6196         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
6197
6198 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
6199
6200         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
6201         
6202         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
6203
6204         * driver.c (mono_main): Ditto.
6205
6206 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
6207
6208         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
6209
6210         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
6211         in the vtable can't be encoded.
6212         (compile_method): Ditto.
6213
6214 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
6215
6216         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
6217         defined.
6218
6219         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
6220         lmf->rbp.
6221
6222         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
6223         the top LMF entry belongs to the current method.
6224
6225         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
6226
6227 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
6228
6229         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
6230         
6231         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
6232
6233         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
6234
6235         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
6236
6237         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
6238
6239         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
6240         implementation.
6241
6242         * basic-float.cs: Add an ulong->double cast test.
6243
6244 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
6245
6246         * mini.c (mono_method_to_ir): Fix a warning.
6247
6248 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
6249
6250         * mini-ops.h: Add OP_SWITCH.
6251
6252         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
6253         CEE_SWITCH in back-end code, use OP_SWITCH instead.
6254
6255 2007-12-11  Geoff Norton  <gnorton@novell.com>
6256
6257         * mini-s390x.c: Minor change to the MAX() define to allow
6258         it to compile with other gcc versions.
6259
6260 2007-12-11  Geoff Norton  <gnorton@novell.com>
6261
6262         * cpu-s390x.md:
6263         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
6264
6265 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6266
6267         exceptions-arm.c (mono_arch_get_restore_context): Restore
6268         the frame pointer.
6269
6270         exceptions-arm.c (throw_exception): Save the frame pointer.
6271         This is a partial fix for #323747. Only the client side is
6272         fixed.
6273
6274 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6275
6276         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
6277         was using an unrelated variable to log the class which
6278         needed the cctor to be called. This was crashing on arm.
6279
6280 2007-12-09  Robert Jordan  <robertj@gmx.net>
6281
6282         * mini-x86.c (mono_arch_emit_epilog):
6283         Consider all kinds of 64-bit types. Fixes #323114.
6284
6285 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
6286
6287         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
6288
6289 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6290
6291         * mini-amd64.c (peephole_pass): Add a missing instruction check.
6292
6293 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6294
6295         * mini.c: run type ctor before allocating an object, not only
6296         when running it's constructor method (fixes at least part of bug #342507).
6297
6298 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6299         
6300         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
6301         
6302         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
6303         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
6304         function.
6305
6306         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
6307         mono_generic_class_init_trampoline () the same as it is done with the other
6308         trampolines.
6309
6310         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
6311         aot-runtime.c aot-compiler.c: Implement AOT support.    
6312
6313 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6314
6315         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
6316         build for archs which don't have the vtable trampoline defined
6317         yet.
6318
6319 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6320
6321         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
6322
6323         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
6324
6325         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
6326
6327         * tramp-<ARCH>.c: Use the new helper function.
6328
6329 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6330
6331         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
6332         trampoline call, which takes a vtable argument.
6333
6334         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
6335         OP_TRAMPCALL_VTABLEs like other calls.
6336
6337         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
6338         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
6339         call.  Implemented a support function which fetches the vtable
6340         from a register set.
6341
6342         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
6343         Implemented a generic class init trampoline, using the
6344         OP_TRAMPCALL_VTABLE opcode.
6345
6346         * mini.c: Implemented static field access when sharing generic
6347         code.  This implies initing the class using the new
6348         OP_TRAMPCALL_VTABLE call.
6349
6350 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6351
6352         * mini.c: Don't compile methods with sharing enabled if their
6353         classes are disabled for sharing.
6354
6355 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6356
6357         * inssel.brg: Add a missing sign extension to the GETCHR and array access
6358         opcodes. Fixes #346563.
6359
6360         * objects.cs: Add a new test.
6361
6362         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
6363
6364         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
6365         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
6366
6367 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6368
6369         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
6370
6371 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
6372
6373         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
6374         code stream.
6375
6376 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
6377
6378         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
6379
6380         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
6381         optimization in the AOT case.
6382         
6383 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
6384
6385         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
6386         
6387         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
6388
6389         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
6390
6391         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
6392
6393         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
6394         is created by the inlined delegate ctor.
6395
6396         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
6397
6398         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
6399
6400 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
6401
6402         * cpu-x86.md: Fix the length of ckfinite.
6403
6404 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
6405
6406         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
6407         
6408         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
6409         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
6410
6411         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
6412
6413         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
6414         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
6415
6416 2007-11-28  Martin Baulig  <martin@ximian.com>
6417
6418         * mini-x86.c
6419         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
6420         after creating the trampoline.
6421
6422 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
6423
6424         * aot-runtime.c (load_aot_module): Check runtime version if needed.
6425
6426         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
6427         the same version.
6428
6429         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
6430         instead of the calling method to help AOT.
6431
6432         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
6433
6434 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
6435
6436         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
6437         is defined.
6438
6439 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
6440
6441         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
6442         
6443         * aot-compiler.c (compile_method): Correct check for generic method definitions.
6444         (encode_method_ref): No need to handle generic method definitions specially.
6445
6446         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6447
6448         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
6449         decode_klass_info.
6450
6451         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
6452         encode_klass_info.
6453         (compile_method): Enable generic sharing.
6454
6455 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
6456
6457         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
6458         (mini_method_compile): Add preliminary support for AOTing shared generic code.
6459
6460         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
6461         generic code.
6462
6463         * mini-trampolines.c: Fix a warning.
6464
6465         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
6466         NEW_PCONST.
6467         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
6468         (generic_class_is_reference_type): Remove unused function.
6469
6470         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
6471         in the generic vtable trampoline case.
6472
6473         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
6474         
6475         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
6476         return an AOT method based on a vtable slot.
6477
6478         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
6479
6480         * mini.c (mini_get_vtable_trampoline): Export this.
6481
6482 2007-11-22  Martin Baulig  <martin@ximian.com>
6483
6484         * debug-debugger.h
6485         (MonoDebuggerInfo): Move `debugger_version' up.
6486
6487 2007-11-22  Martin Baulig  <martin@ximian.com>
6488
6489         * mini-amd64.c
6490         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
6491
6492         * mini-trampolines.c
6493         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
6494         after compiling the method.
6495
6496 2007-11-20  Martin Baulig  <martin@ximian.com>
6497
6498         * debug-mini.c
6499         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
6500         (mono_debugger_remove_breakpoint): Likewise.
6501         (mono_debugger_check_breakpoints): Likewise.
6502
6503         * debug-debugger.c: Implement the new breakpoint interface here.
6504
6505 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
6506
6507         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
6508         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
6509
6510         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
6511
6512 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
6513
6514         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
6515
6516         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
6517         mini.c.
6518
6519         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
6520         mini.c.
6521
6522         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
6523         returning a vtype in a register.
6524
6525         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
6526         here from the arch specific code.
6527
6528         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
6529         mini.c.
6530
6531         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
6532         (mono_arch_emit_prolog): Increment maximum prolog size.
6533
6534         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
6535         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
6536
6537         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
6538         MonoGenericSharingContext.
6539
6540         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
6541         MonoGenericSharingContext. Allocate memory from the cfg mempool.
6542
6543 2007-11-15  Mark Probst  <mark.probst@gmail.com>
6544
6545         * mini.c, mini.h, generic-sharing.c: Functions for producing code
6546         which extract fields out of the runtime generic context.  Full
6547         sharing of the NEWARR opcode.
6548
6549 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6550
6551         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
6552         --enable-minimal=ssa.
6553
6554 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
6555
6556         * mini-trampolines.c (mono_delegate_trampoline): Update after 
6557         mono_marshal_get_delegate_invoke () signature change.
6558
6559 2007-11-13  Mark Probst  <mark.probst@gmail.com>
6560
6561         * mini.c: Removed the shared context in favor of the generic
6562         sharing context.  Allocate the MonoJitInfo structure with room for
6563         the generic sharing context if it's needed.
6564
6565         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
6566         domain-internals.h now.
6567
6568         * mini-x86.c: Pass the generic sharing context to get_call_info ().
6569
6570         * generic-sharing.c: Several changes for working without a shared
6571         context and instead operating on open types instead.
6572
6573 2007-11-12  David S. Miller  <davem@davemloft.net>
6574
6575        * inssel-sparc.brg: Fix double instruction emit.
6576
6577 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
6578
6579         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
6580         Get/Set/Address methods.
6581         
6582         * mini.c debug-debugger.c mini-trampolines.c: Update after 
6583         mono_marshal_get_delegate_invoke signature change.
6584
6585 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6586
6587         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
6588         This can happens with dynamic methods. Fixes the other bug in #322722.
6589
6590 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6591
6592         * tramp-arm.c (mono_arch_patch_callsite): Support patching
6593         BX call sequence.
6594
6595         * mini-arm.c (arm_patch): Implement patching of BX call
6596         sequence. Fixes one of the bugs in #322722.
6597
6598 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
6599
6600        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
6601        under Linux.  We only need to flush every 32-byte cache line.    
6602
6603 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
6604
6605         * mini.c:
6606         move_basic_block_to_end: Add branches when needed, eventually creating
6607         a new BB.
6608         optimize_branches: added a parameter that tells if it's ok to create
6609         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
6610         and avoid calling move_basic_block_to_end when it's not ok.
6611         Fixes bug 318677.
6612
6613 2007-11-07  Mark Probst  <mark.probst@gmail.com>
6614
6615         * mini.c: Abort inlining call to InitializeArray if something
6616         looks wrong.  Let the icall handle it, which now has proper safety
6617         checks.
6618
6619 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6620
6621         * mini.c (mono_spill_call): add support for soft-float.
6622
6623         * mini.c (mono_method_to_ir): add support for soft-float
6624         to inlined functions that return float.
6625
6626         * mini.c (mono_method_to_ir): add support for soft-float
6627         to cee_stsfld opcode on float fields.
6628
6629 2007-11-05  Geoff Norton  <gnorton@novell.com>
6630
6631         * mini-x86.h: Fix the structure access for X86 Leopard.
6632
6633
6634 2007-11-05  Martin Baulig  <martin@ximian.com>
6635
6636         * mini-trampolines.c
6637         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
6638         after compiling the method to notify the debugger.
6639
6640 2007-11-05  Martin Baulig  <martin@ximian.com>
6641
6642         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
6643
6644 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
6645
6646         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
6647         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
6648
6649 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
6650
6651         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
6652         native-to-managed wrappers.
6653         
6654 2007-11-01  Geoff Norton  <gnorton@novell.com>
6655
6656         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
6657         members.
6658
6659 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
6660
6661         * mini.c, mini-x86.c: when getting back from unmanaged code
6662         to managed via a marshaled delegate we also need to set the
6663         right domain.
6664
6665 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
6666
6667         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
6668         for amd64.
6669
6670 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6671
6672         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
6673         let the debugger or other external agents to tell the JIT when
6674         a sw breakpoint has been inserted in the code that the JIT needs
6675         to be able to inspect.
6676
6677 2007-10-31  Martin Baulig  <martin@ximian.com>
6678
6679         * debug-debugger.h
6680         (MonoDebuggerInfo): Remove `runtime_class_init'.
6681
6682 2007-10-30  Martin Baulig  <martin@ximian.com>
6683
6684         * debug-mini.h
6685         (mono_debugger_thread_created): Added `MonoThread *' argument.
6686         (mono_debugger_extended_notification): New public method.
6687         (mono_debugger_trampoline_compiled): New public method.
6688
6689         * debug-mini.c
6690         (MonoDebuggerThreadInfo): Added `thread' and
6691         `extended_notifications' fields.
6692
6693         * debug-debugger.c
6694         (debugger_executable_code_buffer): New static variable.
6695
6696         * debug-debugger.h
6697         (MonoDebuggerInfo): Added `executable_code_buffer',
6698         `executable_code_buffer_size', `breakpoint_info_area',
6699         `breakpoint_table' and `breakpoint_table_size'.
6700
6701 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
6702
6703         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
6704         that IP  either is an unused value or the vtable pointer. IMT 
6705         calls use vtable + offset now. Reduced by almost half the size
6706         of IMT entries.
6707
6708 2007-10-26  Jonathan Chambers <joncham@gmail.com>
6709
6710         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
6711         defines to access param registers. Replace long usage with
6712         gsize as sizeof(long) != sizeof(void*) on Win64.
6713
6714         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
6715         on Win64. Fix intrinsic, use _AddressOfReturnAddress
6716         instead of non-existant _GetAddressOfReturnAddress.
6717
6718         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
6719         param registers. Save/restore %rdi and %rsi in MonoLMF.
6720
6721         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
6722         param registers. Modify (throw_exception) signature to take 
6723         %rdi and %rsi on Win64. 
6724
6725         Code is contributed under MIT/X11 license.
6726
6727 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6728
6729         * helpers.c: unlink debugging output files.
6730
6731 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
6732
6733         * mini.c: Move mono_create_ftnptr () to object.c.
6734
6735 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6736
6737         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
6738         optional. This function can now be used to disassemble code generated
6739         outside the JIT such as trampolines and IMT thunks.
6740
6741         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
6742
6743         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
6744         vtable pointer from a ldr instruction.
6745
6746         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
6747         new IMT call sequence.
6748
6749         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
6750         call sequence for interface invocations.
6751
6752         * mini-arm.c (mono_arch_emit_imt_argument): added, required
6753         for imt support. This function is empty since IMT on ARM requires no
6754         special handling on the IR side.
6755
6756         * mini-arm.c (mono_arch_find_imt_method): added, required for
6757         imt support.
6758
6759         * mini-arm.c (mono_arch_find_this_argument): added, required
6760         for imt support.
6761
6762         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
6763         a ldr instruction to load a value stored in the code stream.
6764
6765         * mini-arm.c (mono_arch_build_imt_thunk):added, required
6766         for imt support.
6767
6768
6769 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
6770
6771         * mini.c (mini_init): Install the jump trampoline callback.
6772
6773 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6774
6775         * mini-trampolines.c: handle synchronized methods with the common
6776         vtable trampoline (bug #335601).
6777
6778 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
6779
6780         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
6781
6782         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
6783         64 bit platforms.
6784
6785         * mini-ia64.h mini-ia64.c: Add support for IMT.
6786
6787         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
6788         prolog. Fixes #331958.
6789
6790 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
6791
6792         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
6793
6794 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6795
6796         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
6797         trampoline.
6798
6799 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6800
6801         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
6802         trampoline.
6803
6804 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
6805
6806         * mini-x86.c, mini-x86.h: x86 support for the common vtable
6807         trampoline.
6808
6809 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
6810
6811         * mini-trampolines.c: changed the magic rampoline to understand
6812         the common vtable trampoline method: the method to invoke is
6813         determined by the vtable displacement of the call.
6814
6815 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6816
6817         * mini.c, mini.h: register the common vtable trampoline if the
6818         architecture supports it.
6819
6820 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6821
6822         * cpu-amd64.md: use the correct max length for tls_get.
6823
6824 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
6825
6826         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
6827         CEE_STELEM_ANY. Fixes #333696.
6828
6829 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
6830
6831         * exceptions-x86.c: provide more graceful handling of the case where
6832         we followed a bogus function pointer from managed code (bug #332866).
6833
6834 2007-10-11  Mark Probst  <mark.probst@gmail.com>
6835
6836         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
6837         replaces the generic_shared flag and will carry more information
6838         in the future.
6839
6840         * generic-sharing.c: Added mini_type_stack_size() which allows
6841         allows open types if given a generic sharing context.
6842         mini_get_basic_type_from_generic() takes a
6843         MonoGenericSharingContext* instead of a MonoCompile* now.
6844
6845         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
6846         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
6847         mini-sparc.c, mini-x86.c: Trivial changes required by the two
6848         changes above.  Just passing arguments through to the right
6849         places.
6850
6851 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
6852
6853         * mini-arm.c: unify the call emission to emit_code_seq().
6854
6855 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
6856
6857         * tramp-arm.c: reduced the trampoline size.
6858
6859 2007-10-10  Mark Probst  <mark.probst@gmail.com>
6860
6861         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
6862         variable handling out of arch-specific code.
6863
6864 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
6865
6866         * mini-arm.c: implemented fast delegate dispatch.
6867
6868 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6869
6870         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
6871         that fp elimination is turned off if the space required by locals is too
6872         big. Fixes #331958.
6873
6874 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
6875
6876         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
6877         ARM to the new style trampoline.
6878
6879 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6880
6881         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
6882
6883         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
6884
6885 2007-10-09  Martin Baulig  <martin@ximian.com>
6886
6887         * debug-debugger.h
6888         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
6889         `field_info_offset_offset'.     
6890
6891 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
6892
6893         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
6894         removed more internal usage of the r11 register and made it available
6895         to the register allocator.
6896
6897 2007-10-08  Mark Probst  <mark.probst@gmail.com>
6898
6899         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
6900         when sharing generics and treat type variables as references.
6901
6902 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6903
6904         * mini-ppc.c: started removing the internal uses of register r11
6905         to eventually allow the register allocator to manage it as an
6906         additional available register.
6907
6908 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
6909
6910         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
6911
6912 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
6913
6914         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
6915         specific trampolines as they are not performance critical as a jump
6916         target (maybe align as before only for AOT code?). This saves about
6917         200 KB of native code on x86 for monodevelop startup.
6918
6919 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
6920
6921         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
6922         monodevelop startup.
6923
6924 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
6925
6926         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
6927
6928         * mini-sparc.h mini-sparc.c: Implement IMT support.
6929
6930         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
6931         its smaller and doesn't clobber sparc_g1.
6932
6933         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
6934
6935 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6936
6937         * mini-ppc.c: optimized the size of the IMT thunks a bit.
6938
6939 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
6940
6941         * mini-ppc.c: implemented fast delegate invocation.
6942
6943 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
6944
6945         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
6946
6947 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6948
6949         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
6950         code to the new style trampoline in preparation for IMT support.
6951
6952 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
6953
6954         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
6955         systems already. This also reduces the specific trampiline sizes and
6956         prepares for the use of r12 as the IMT identifier register.
6957
6958 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6959
6960         * mini-mips.h: endianess fix (simplified from a patch by
6961         Thomas Kunze <thommy@tabao.de>, bug #323737).
6962
6963 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6964
6965         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
6966         to access ucontext fields and enable netbsd support
6967         (partially from Magnus Henoch <mange@freemail.hu>).
6968
6969 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6970
6971         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
6972         use the preprocessor from the CPP env var if it is set.
6973
6974 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6975
6976         * mini-trampolines.c: fixed an assertion and moved it earlier in the
6977         code, before interface_offset gets used.
6978
6979 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
6982         mono_class_setup_vtable () before accessing klass->vtable.
6983
6984 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
6985
6986         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
6987         hackish.
6988
6989 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6990
6991         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
6992         IMT slots (this saves hundreds of KB of memory in programs like
6993         IronPython and Monodevelop).
6994
6995 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
6996
6997         * mini.c: print the delegate counter.
6998
6999 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
7000
7001         * mini-x86.c: make it easier to enable the debugging code for IMT
7002         slots.
7003
7004 2007-09-28  Martin Baulig  <martin@ximian.com>
7005
7006         * debug-debugger.h
7007         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
7008         `mono_method_klass_offset' and `mono_method_token_offset'.
7009
7010 2007-09-20  Mark Probst  <mark.probst@gmail.com>
7011
7012         * mini.c: First generics sharing implementation.  Can only share
7013         in very simple cases.  If sharing doesn't work it falls back to
7014         dedicated compilation.
7015
7016         * mini.h: Flag in MonoCompile to specify whether generic
7017         compilation is shared.  Flags enum for marking which generic inst
7018         of a context is used.  Prototypes for helper functions.
7019
7020         * generic-sharing.c: Helper functions for generic method sharing.
7021
7022         * optflags-def.h: Optimization flag (gshared) for enabling generic
7023         method sharing added.
7024
7025         * Makefile.am: generic-sharing.c added.
7026
7027 2007-09-19 Daniel Nauck <dna@mono-project.de>
7028
7029         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
7030
7031 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
7032         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
7033         fixes bug 325507.
7034
7035 2007-09-19  Martin Baulig  <martin@ximian.com>
7036
7037         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
7038         mono_debug_cleanup() is now part of mono_cleanup().
7039
7040 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
7041
7042         * driver.c (mono_main): Fix a warning.
7043
7044 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
7045
7046         * aot-compiler.c: Optimize various parts when processing large assemblies.
7047         Fixes ##325568.
7048
7049         * mini.c (mono_patch_info_hash): Improve hash function.
7050
7051 2007-09-14  Jonathan Chambers <joncham@gmail.com>
7052
7053         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
7054         
7055         Code is contributed under MIT/X11 license.
7056
7057 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * mini.c (mini_init): Fix a leak.
7060
7061         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
7062
7063 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7064
7065         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
7066
7067 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
7068
7069         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
7070
7071 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
7072
7073         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
7074         variance tests.
7075
7076         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
7077
7078         * mini.c (handle_alloc): Enable managed allocators in AOT code.
7079
7080         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
7081
7082         * aot-runtime.c (decode_patch_info): Ditto.
7083
7084 2007-09-12  Jonathan Chambers <joncham@gmail.com>
7085
7086         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
7087         static case. Cache delegates in architecture specific code, 
7088         based on number of parameters.
7089         
7090         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
7091         in architecture specific code, based on number of parameters.
7092         
7093         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
7094         caching happen in architecture specific code now.
7095         
7096         Code is contributed under MIT/X11 license.
7097
7098 2007-09-12  Jonathan Chambers <joncham@gmail.com>
7099
7100         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
7101         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
7102         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
7103
7104         Code is contributed under MIT/X11 license.
7105
7106 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7107         * mini.c: (mono_thread_abort) Fixed bug #82416.
7108
7109 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
7110
7111         * mini.: hook the new managed GC allocation feature into the JIT.
7112
7113 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7114
7115         * mini.c: implementation for the new runtime tls opcode.
7116
7117 2007-09-11  Martin Baulig  <martin@ximian.com>
7118
7119         * debug-debugger.h
7120         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
7121         `mono_method_inflated_offset'.
7122
7123 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
7124
7125         * driver.c mini.h mini.c: Add a new devel command line option for injecting
7126         async exceptions into a method.
7127
7128         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
7129         purpose of testing whenever the unwinder works at every instruction.
7130
7131 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
7132
7133         * mini.c: check accessibility of method used in ldftn (fixes
7134         bug #82635).
7135
7136 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
7137
7138         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
7139
7140         * inssel.brg: Fix a warning.
7141
7142 2007-09-03  Martin Baulig  <martin@ximian.com>
7143
7144         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
7145         now takes the `main_method' as argument.
7146
7147 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
7148
7149         * cpu-sparc.md (endfilter): Add missing src1:i argument.
7150
7151 2007-08-30  Jonathan Chambers <joncham@gmail.com>
7152
7153         * driver.c: include the cil-coff.h header on Windows.
7154         
7155         Code is contributed under MIT/X11 license.
7156
7157 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7158
7159         * mini.c, driver.c: don't include the cil-coff.h header.
7160
7161 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
7162
7163         * mini.c: flag places that needs fixes fo soft-float support.
7164
7165 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
7166
7167         * mini.h, inssel-float.brg: fix soft-float constant loads on big
7168         endian systems (partially from Dean Jenkins, bug #81924).
7169
7170 2007-08-28  Mark Probst  <mark.probst@gmail.com>
7171
7172         * mini.c (check_linkdemand): Remove embedded reference object in
7173         call to LinkDemandSecurityException.
7174         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
7175         with an IntPtr instead of a reference object.
7176
7177 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
7178
7179         * mini.c (handle_initobj): Handle alignment properly.
7180
7181         * inssel.brg (mini_emit_memset): Ditto. 
7182
7183         * inssel.brg (mini_emit_memcpy): Ditto. 
7184
7185         * inssel-sparc.brg: Ditto.              
7186
7187         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
7188
7189 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
7190
7191         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
7192         exceptions raised in unmanaged code. Fixes part of #82594.
7193
7194 2007-08-24  Mark Probst  <mark.probst@gmail.com>
7195
7196         * mini.c (mono_method_to_ir), declsec.c
7197         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
7198
7199 2007-08-22  Martin Baulig  <martin@ximian.com>
7200
7201         * debug-mini.h
7202         (MonoDebuggerThreadInfo): New typedef.
7203         (mono_debugger_thread_table): New global variable.
7204         (mono_debugger_thread_created): New public function.
7205         (mono_debugger_thread_cleanup): New public function.
7206
7207         * debug-debugger.h
7208         (MonoDebuggerInfo):
7209         - removed `get_current_thread' and `lookup_assembly'.
7210         - removed `data_table'.
7211         - added `thread_table'.
7212
7213         * mini.c
7214         (mono_thread_start_cb): Call mono_debugger_thread_created().
7215         (mono_thread_attach_cb): Likewise.
7216         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
7217         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
7218         initial domain.
7219
7220         * driver.c (mono_main): Move mono_debug_init() up, before calling
7221         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
7222
7223 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7224
7225         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
7226         together when passing several arguments of type double (gives a small
7227         speedup and saves a few bytes of generated code).
7228
7229 2007-08-20  Jb Evain  <jbevain@novell.com>
7230
7231         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
7232
7233 2007-08-20  Jb Evain  <jbevain@novell.com>
7234
7235         * mini.c (mono_method_to_ir): throw MethodAccessException
7236         and FieldAccessException instead of InvalidProgramException.
7237
7238 2007-08-20  Mark Probst  <mark.probst@gmail.com>
7239
7240         * mini.c: CoreCLR security checks.
7241
7242         * mini.h: Removed MonoSecurityMode (moved to
7243         metadata/security-manager.h) and mono_security_mode global var
7244         (replaced by set/get functions in security-manager.h).
7245
7246         * driver.c: Added "core-clr-test" security mode for testing.  Used
7247         set-function for setting security mode.
7248
7249 2007-08-17  Mark Probst  <mark.probst@gmail.com>
7250
7251         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
7252         the new jit_info_table.
7253
7254         * driver.c: Test code for the new jit_info_table (enabled by the
7255         define MONO_JIT_INFO_TABLE_TEST).
7256
7257 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
7258
7259         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
7260         detection of call <REG> instruction sequence. Fixes build on freebsd.
7261
7262 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
7263
7264         * mini-exceptions.c: Fix a warning.
7265
7266 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
7267
7268         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
7269         stack overflow handling code on amd64 too.
7270
7271         * mini-exceptions.c (mono_setup_altstack): Make this use 
7272         mono_thread_get_stack_bounds ().
7273
7274         * mini-x86.h: Disable sigaltstack on solaris x86.
7275
7276 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
7277
7278         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
7279
7280 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
7281
7282         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
7283
7284 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
7285
7286         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
7287
7288         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
7289
7290 2007-08-03  Neale Ferguson <neale@sinenomine.net>
7291
7292         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
7293         due to alignment.
7294
7295 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7296
7297         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
7298         to be emitted (bug #82281).
7299
7300 2007-08-01  Martin Baulig  <martin@ximian.com>
7301
7302         Merged the `debugger-dublin' branch.
7303
7304         * debug-debugger.h (MonoDebuggerInfo):
7305         Removed the `old_*' compatibility entries.
7306         Added `debugger_version' and `data_table'.
7307         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
7308         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
7309
7310         * debug-mini.c
7311         (MiniDebugMethodBreakpointInfo): Add `address_list'.
7312         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
7313         instead of a `gconstpointer'.
7314         (mono_debugger_insert_method_breakpoint): Return a
7315         `MonoDebugMethodAddressList *'.
7316
7317 2007-06-28  Martin Baulig  <martin@ximian.com>
7318
7319         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7320
7321 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
7322
7323         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
7324         __builtin_frame_address () since it is broken on older gcc versions.
7325
7326 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
7327
7328         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
7329         on the stack overflow handling and made the managed stack overflows
7330         catchable in most cases using soft guard pages.
7331         * exceptions-x86.c: added code to restore the protection in the soft
7332         guard pages at the end of exception handling.
7333
7334 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
7335
7336         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
7337
7338 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7339
7340         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
7341         exception handling.
7342
7343 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7344
7345         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
7346         signal handling support until it has been ported to the new mechanism.
7347         * mini.c: fixed stack overflow detection and use the new
7348         architecture code  to handle signals on the altstack.
7349
7350 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
7351
7352         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
7353         stack overflows on the alt stack.
7354
7355 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
7356
7357         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
7358         stack overflows on the alt stack.
7359
7360 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
7361
7362         * exceptions-ppc.c: cleanup preparing for altstack support.
7363
7364 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7365
7366         * exceptions-arm.c: cleanup preparing for altstack support.
7367
7368 2007-07-27  Mark Probst  <mark.probst@gmail.com>
7369
7370         * mini.c (print_jit_stats): Output hazard pointer stats.
7371
7372 2007-07-26  Mark Probst  <mark.probst@gmail.com>
7373
7374         * driver.c, mini.c: Replaced security mode flags with a single
7375         enum variable.
7376
7377 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7378
7379         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
7380
7381 2007-07-25  Mark Probst  <mark.probst@gmail.com>
7382
7383         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
7384         (which doesn't do anything yet) for activating Core CLR
7385         (Silverlight) security.
7386
7387 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
7388
7389         * mini-codegen.c: work around a possible gcc bug on arm.
7390
7391 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
7392
7393         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
7394         message for platforms that don't support AOT compilation.
7395
7396 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
7397
7398         * mini.h, mini.c, driver.c: temporary smcs hack.
7399
7400 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
7401
7402         * mini-arm.h, mini-arm.c: arm EABI fixes.
7403
7404 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
7405
7406         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
7407         case.
7408
7409         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
7410         trampolines taking a method argument.
7411
7412         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
7413
7414         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
7415         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
7416
7417         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
7418         JIT compilation throws an exception. Fixes #82050.
7419
7420 2007-07-19  Mark Probst  <mark.probst@gmail.com>
7421
7422         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
7423         with the MONO_EXCEPTION_ defines.
7424
7425 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
7426
7427         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
7428         #82117.
7429         
7430         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
7431         the cause of an assertion.
7432
7433 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
7434
7435         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
7436         removed.
7437
7438 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
7439
7440         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
7441         assert. Should fix #82103.
7442
7443 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
7444
7445         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
7446         here too. Fixes #82095.
7447
7448         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
7449         addresses.
7450
7451         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
7452
7453         * mini-amd64.h: Enable IMT for amd64.
7454         
7455         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
7456
7457 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
7458
7459         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
7460
7461 2007-07-12  Mark Probst  <mark.probst@gmail.com>
7462
7463         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
7464         as soon as check_linkdemand sets an exception_type.
7465
7466 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7467
7468         * mini-x86.c: fixed offsets for IMT call sequence.
7469         * mini-x86.h: enable IMT again.
7470
7471 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7472
7473         * trace.c (mono_trace_enter_method): Decode MonoType too.
7474
7475         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
7476
7477         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
7478
7479         * mini-amd64.c: Add preliminary IMT implementation.
7480         
7481 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
7482
7483         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
7484         understand the new IMT-base interface invocation (thanks to
7485         Daniel Nauck for the report and the remote debugging session).
7486
7487 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
7488
7489         * mini-x86.c: size and speed optimizations for the IMT bsearch.
7490
7491 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7492
7493         * Makefile.am (aotcheck): Make this actually use the AOTed code.
7494
7495 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
7496
7497         * mini-trampolines.c: implement AOT IMT support.
7498         * mini-x86.h: enable IMT support for wider testing.
7499
7500 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7501
7502         * inssel.brg (emit_imt_argument): Add aot support here.
7503
7504         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
7505
7506 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
7507
7508         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
7509         of the IMT implementation, partially from massi, with my
7510         implementation of the bsearch sequence. Disabled by default until
7511         the AOT code is implemented.
7512
7513 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7514
7515         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
7516
7517         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
7518
7519 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7520
7521         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
7522         arch-independent IMT JIT code from Massimiliano
7523         Mantione (massi@ximian.com) with small cleanups from me.
7524
7525 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7526
7527         * Makefile.am: fix svn invocation to get the svn revision to be
7528         independent of the local language (build fix).
7529
7530 2007-07-09  Mark Probst  <mark.probst@gmail.com>
7531
7532         * mini.c (inline_method): Reset cfg->exception_type if the
7533         inlining is aborted.  Fixes: 82049.
7534
7535 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
7536
7537         * mini.c: remove assert from exception handling code when exception_ptr
7538         is not set.
7539
7540 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7541
7542         * mini.c (mono_codegen): Add an assert.
7543
7544         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
7545         enter and leave code.
7546         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
7547
7548 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7549
7550         * mini-ppc.c: fixed memory corruption for localloc(0)
7551         (bug #81852).
7552
7553 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7554         
7555         * mini.c: Fix warnings.
7556
7557 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
7558
7559         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
7560         to emit better double->int conversions.
7561
7562 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7563
7564         * mini.c: the provided Min/Max optimizations are valid for unisgned
7565         ints.
7566
7567 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
7568
7569         * 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
7570
7571 2007-06-28  Miguel de Icaza  <miguel@novell.com>
7572
7573         * mini.c (mono_running_on_valgrind): Add support for reporting the
7574         method and  its boundaries to valgrind.
7575
7576 2007-06-28  Martin Baulig  <martin@ximian.com>
7577
7578         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7579
7580 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
7581
7582         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
7583
7584         * generic.2.cs: Add new test case.
7585
7586 2007-06-25  Martin Baulig  <martin@ximian.com>
7587
7588         Merged the `debugger-dublin' branch.
7589
7590         * debug-mini.c
7591         (mono_debugger_insert_method_breakpoint): New public method.
7592         (mono_debugger_remove_method_breakpoint): Likewise.
7593         (mono_debugger_check_breakpoints): New static method.
7594         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
7595
7596         * debug-debugger.h (MonoDebuggerInfo):
7597         Renamed (to keep backward compatibility in the vtable):
7598         `insert_breakpoint' -> `old_insert_breakpoint'.
7599         `remove_breakpoint' -> `old_remove_breakpoint'.
7600         `create_string' -> `old_create_string'.
7601         `lookup_class' -> `old_lookup_class'.
7602         `lookup_type' -> removed; changed into a dummy field.
7603         `lookup_assembly' -> `old_lookup_assembly'.
7604         Added (same functionality, but different signature):
7605         `create_string', `lookup_class', `lookup_assembly'
7606         Added new:
7607         `get_method_addr_or_bpt', `remove_method_breakpoint',
7608         `runtime_class_init'.
7609
7610         * debug-debugger.c: Merged the `debugger-dublin' branch.
7611
7612 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
7613
7614         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
7615         well.
7616         (peephole_pass): Likewise.
7617
7618 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
7619
7620         * driver.c: hopefully make setaffinity work also for ancient
7621         versions of linux.
7622
7623 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
7624
7625         * driver.c : win32 build fix.
7626
7627 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
7628
7629         * driver.c: check for the MONO_NO_SMP env var and bind to a single
7630         processor if it is set.
7631
7632 2007-06-21  Martin Baulig  <martin@ximian.com>
7633
7634         * debug-mini.h: New file.
7635
7636         * debug-mini.c
7637         (mono_debugger_insert_breakpoint_full): Moved here from
7638         ../metadata/mono-debug-debugger.c.
7639         (mono_debugger_remove_breakpoint): Likewise.
7640         (mono_debugger_breakpoint_callback): Likewise.
7641
7642 2007-06-15  Raja R Harinath  <rharinath@novell.com>
7643
7644         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7645         changes in MonoGenericClass.
7646
7647 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
7648
7649         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
7650
7651 2007-06-14  Raja R Harinath  <rharinath@novell.com>
7652
7653         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7654         removal of MonoGenericMethod.
7655
7656 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7657
7658         * mini-exceptions.c: hooks for the exception events profiling API.
7659
7660 2007-06-14  Randolph Chung  <tausq@debian.org>
7661
7662         * Makefile.ma: Add hppa target.
7663         * mini-arch.h: Include mini-hppa.h
7664         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
7665         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
7666         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7667
7668 2007-06-14  Randolph Chung  <tausq@debian.org>
7669
7670         * inssel.brg: Add rules for "chained" compare-branch operations so that
7671         a single compare op can affect multiple branches.  Adjust cost for
7672         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
7673         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
7674         cost for some rules so that they can more easily be overridden by
7675         per-arch rules (with fixes from lupus).
7676         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7677
7678 2007-06-13  Randolph Chung  <tausq@debian.org>
7679
7680         * mini-ops.h: Reorder branch ops so that they match the order of the
7681         corresponding CEE_* ops.  The code expects them this way.
7682         Add new ops for HPPA target.
7683         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7684
7685 2007-06-13  Randolph Chung  <tausq@debian.org>
7686
7687         * mini-exceptions.c: Handle cases where the stack grows towards
7688         larger addresses.
7689         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7690
7691 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7692
7693         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
7694         counter.
7695         * driver.c: explain where a non-matching corlib is found.
7696
7697 2007-06-13  Mark Probst  <mark.probst@gmail.com>
7698
7699         * mini.c (print_jit_stats): Output dynamic code allocation stats.
7700
7701 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
7702
7703         * mini-exceptions.c: Generate a method profile leave event during
7704         an exception to ensure that the profiler gets notified.
7705
7706 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
7707
7708         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
7709         branch.
7710
7711         * cpu-amd64.md: Add long_and/or/xor opcodes.
7712
7713 2007-06-06  Wade Berrier  <wberrier@novell.com>
7714
7715         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
7716         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
7717         length of instruction shr_imm (expected 8, got 10)
7718
7719 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
7720
7721         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
7722
7723 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7724
7725         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7726         MonoInternalHashTable again (fixed bug in the internal hash table
7727         code).
7728
7729 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7730
7731         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
7732         Have to figure out what makes it crash the SWF regression.
7733
7734 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
7735
7736         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
7737
7738 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7739
7740         * mini.c: optimize out the type check when storing null in a
7741         reference array.
7742
7743 2007-06-04  Mark Probst  <mark.probst@gmail.com>
7744
7745         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7746         MonoInternalHashTable.
7747
7748 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
7749
7750         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
7751         signed integer methods.
7752
7753 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7754
7755         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
7756         permanently since the current approach doesn't work.
7757
7758 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7759
7760         * inssel.brg (stmt): Only call delegate->invoke_impl if 
7761         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
7762
7763 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7764
7765         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
7766         the sreg2==rdx case.
7767         
7768         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
7769         account if it contains a rex prefix.
7770         (peephole_pass): Handle OP_FMOVE as well.
7771
7772 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7773
7774         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
7775         as it causes regressions.
7776
7777 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
7778
7779         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
7780         static case as well.
7781
7782         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
7783
7784         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7785         (mono_arch_get_this_arg_from_call): Ditto.
7786
7787         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
7788
7789         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
7790         invoke_impl field.
7791
7792         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7793         (mono_arch_get_this_arg_from_call): Ditto.
7794
7795         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
7796         
7797         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
7798         try to create optimized invoke code and use that for further invocations. 
7799         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
7800
7801         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
7802
7803 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
7804
7805         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
7806         sealed classes or methods.
7807         *devirtualization.cs: tests for the new optimization
7808
7809 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
7810
7811         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
7812         by the update_volatile () function.
7813
7814 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
7815
7816         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
7817         require it.
7818
7819         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
7820
7821 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
7822
7823         * mini.c: Add configure checks for header files.
7824         * mini-x86.c: Add configure checks for header files.
7825         * trace.c: Add configure checks for header files.
7826         * aot-runtime.c: Add configure checks for header files.
7827         * aot-compiler.c: Add configure checks for header files.
7828         * driver.c: Add configure checks for header files.
7829         * mini-codegen.c: Add configure checks for header files.
7830         
7831         Code is contributed under MIT/X11 license.
7832
7833 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
7834
7835         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
7836         icompare_imm -128 + op_iclt. Fixes #81703.
7837
7838 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
7839
7840         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
7841
7842 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7843
7844         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
7845         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
7846         so that all isinst checks now use "interface_bitmap".
7847
7848 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
7849
7850         * cpu-amd64.md (jmp): Fix a warning.
7851
7852         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
7853
7854         * basic.cs: Add new regression test.
7855
7856         * basic.cs: Remove test which is now in basic-long.cs.
7857
7858         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
7859
7860         * basic-long.cs: Add new test.
7861         
7862 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
7863
7864         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
7865
7866 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
7867
7868         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
7869
7870         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
7871         places.
7872         
7873         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
7874         throwing code a bit.
7875
7876         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
7877         the exception throwing code a bit.
7878
7879         * mini-x86.c (get_call_info): Allocate result from a mempool.
7880
7881 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
7882
7883         * aot-compiler.c (find_typespec_for_class): Fix the assert.
7884
7885         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
7886
7887         * mini.h (MonoCompile): Add 'token_info_hash' field.
7888
7889         * mini.c: Save token->method associations during compilation so the AOT 
7890         compiler can use it.
7891         
7892         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
7893         which reference generic classes and methods.
7894
7895 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
7896
7897         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
7898
7899         * aot-compiler.c (compile_method): Fix a typo in a comment.
7900
7901         * aot-runtime.c (decode_cached_class_info): Skip generic types.
7902
7903         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
7904         everything generic.
7905
7906         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
7907
7908 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
7909
7910         * mini.h (MonoCompile): Add 'args' field.
7911
7912         * mini.c (mono_compile_create_vars): Store variables representing the arguments
7913         into cfg->args.
7914
7915         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
7916
7917 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
7918
7919         * mini.c (mono_compile_get_interface_var): Remove this unused function.
7920
7921         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
7922
7923         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
7924         opcodes for some opcodes.
7925
7926         * mini.h *.brg *.c: Use the new opcodes.
7927
7928 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
7929
7930         * mini.h: Bumped aot revision.
7931
7932         * inssel.brg: modified code generation of type checks for interfaces
7933         to use the new "MonoClass.interface_bitmap" instead of the old
7934         "MonoClass.interface_offsets".
7935
7936 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
7937
7938         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
7939
7940 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
7941
7942         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
7943         64 bit platforms.
7944
7945 2007-04-27  Neale Ferguson <neale@sinenomine.net>
7946
7947         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
7948
7949 2007-04-27  Wade Berrier  <wberrier@novell.com>
7950
7951         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
7952         mini.h) to fix build.
7953
7954 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
7955
7956         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
7957         
7958         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
7959         causes the corlib unit tests to fail.
7960
7961 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
7962
7963         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
7964
7965         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
7966
7967         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
7968         opcodes to the comparison relations.
7969
7970         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
7971         opcodes to their types.
7972         
7973         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
7974
7975         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
7976         it in cfg->arch.cinfo.
7977
7978         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
7979
7980         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
7981         cfg->cil_offset_to_bb.
7982
7983 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
7984
7985         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
7986         created becase of initlocals.
7987
7988 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
7989
7990         * mini-alpha.c cpu-alpha.md: More alpha port work from 
7991         Sergey Tikhonov <tsv@solvo.ru>.
7992
7993 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
7994
7995         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
7996
7997 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
7998
7999         * cpu-s390.md (break): Correct the length of break instruction.
8000
8001 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8002
8003         * mini.c: fix a couple of soft-float issues and comments.
8004
8005 2007-04-15  Miguel de Icaza  <miguel@novell.com>
8006
8007         * trace.c (is_filenamechar): - is also a filename char.
8008
8009 2007-04-15  Neale Ferguson <neale@sinenomine.net>
8010
8011         * mini-s390.c: Correct checking for enum type in return value processing.
8012
8013 2007-04-14  Raja R Harinath  <rharinath@novell.com>
8014
8015         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
8016         (version.h): Makefile is in the build directory.
8017
8018 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
8019
8020         * mini-amd64.h: fix for assertion failure on Solaris/amd64
8021
8022 2007-04-11  Martin Baulig  <martin@ximian.com>
8023
8024         * mini.c (can_access_member): Fix handling of generic classes;
8025         fixes #81259.
8026
8027 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
8028
8029         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
8030
8031 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
8032
8033         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
8034
8035 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
8036
8037         * mini-codegen.c: make sure the right spill amount is
8038         used for fp or integer registers (fixes the float_sub_spill() on ppc).
8039
8040 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
8041
8042         * mini-ppc.c: fixes for the fp_branch_nan test.
8043
8044 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
8045
8046         * basic.cs: Comment out new test which still fails on ia64.
8047
8048 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8049
8050         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
8051
8052 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8053
8054         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
8055
8056 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
8057
8058         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
8059         on 64 bit machines. Fixes part of #80738.
8060
8061         * basic.cs: Add regression test.
8062
8063 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
8064
8065         * inssel.brg basic.cs: Revert previous change to fix build.
8066
8067         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
8068         platforms.
8069         
8070         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
8071
8072         * basic.cs: Add new regression test.
8073
8074 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
8075
8076         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
8077         many arguments.
8078
8079 2007-03-16  Neale Ferguson <neale@sinenomine.net>
8080
8081         * cpu-s390x.md: Correct length of break instruction.
8082
8083 2007-03-16  Neale Ferguson <neale@sinenomine.net>
8084
8085         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
8086         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
8087
8088 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
8089
8090         * *.c: Begin WIN64 port.
8091         * mini.c:  Use correct register in profiler.
8092         * mini-amd64.c: No inline assembly on Win64.
8093         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
8094         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
8095         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
8096         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
8097         mono_arch_ip_from_context for Win64.
8098         
8099         Contributed under MIT/X11 license.
8100
8101 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
8102
8103         * exceptions-amd64.c (seh_handler): Ditto.
8104
8105         * exceptions-x86.c (seh_handler): Fix a memory leak.
8106
8107 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
8108
8109         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
8110         mini-s390x.c: fixed peephole optimizations to deal
8111         correctly with 1 and 2 byte reload avoidance.
8112
8113 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
8114
8115         * cpu-s390.md, cpu-s390x.md: update localloc length.
8116
8117 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8118
8119         * cpu-g4.md: added missing descriptions.
8120
8121 2007-03-14  Miguel de Icaza  <miguel@novell.com>
8122
8123         *  Makefile.am: Add support so the tail tests are not executed on
8124         PowerPC as that is a known limitation of the PowerPC port.
8125
8126 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
8127
8128         * runmdesc.bat:  Move to msvc directory.
8129         
8130 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
8131
8132         * runmdesc.bat:  Run executable that was produced by the current
8133         target and sent via an argument.
8134         
8135 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
8136
8137         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
8138         #81102.
8139
8140         * generics.2.cs: Add regression test.
8141
8142 2007-03-09  Wade berrier  <wberrier@novell.com>
8143
8144         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
8145
8146 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
8147
8148         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
8149         AOT code depends on this.
8150
8151 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
8152
8153         * mini.c: more precise tracking of types in the eval stack
8154         (part of fix for bug #81044).
8155
8156 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
8157
8158         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
8159
8160         * aot-compiler.c (encode_patch): Remove an obsolete comment.
8161
8162 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
8163
8164         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
8165
8166         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
8167
8168 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
8169
8170         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
8171         a pointer on 64 bit systems. Fixes #80190.
8172
8173         * iltests.il: Add new regression test.
8174
8175 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8176
8177         * mini.c: inline a constant for Environment.IsRunningOnWindows.
8178
8179 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
8180
8181         * trace.c: Remove an erroneous alignemnt check when tracing.
8182           Fixes --trace on OSX86.
8183
8184 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8185
8186         * mini-$(arch).h: initialize SP in context for all the archs.
8187
8188 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
8189
8190         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
8191         regressions in the thread tests.
8192
8193 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
8194
8195         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
8196         - fixed implementation of LOCALLOC opcode
8197         - implemented non-un compare for floats
8198         - code cleanup
8199         - implementation of FDIV and CKFINITE opcodes
8200         - fixes for latest mono updates
8201         - additional arch opcodes
8202
8203 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8204
8205         * Makefile.am: simplify and merge rules for cross-compilation.
8206
8207 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
8208
8209         * local-propagation.c: Actually *apply* the fix for bug 80591...
8210
8211 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8212
8213         * mini-exceptions.c: backuot part of the last change
8214         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
8215
8216 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
8217         * inssel.brg: Fix bug 59286.
8218
8219
8220 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
8221
8222         * mini-exceptions.c: patch from Zoltan to correctly check for
8223         stack boundaries (using the stack register, not the frame register),
8224         fixes bugs #80724, #79717.
8225
8226 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
8227
8228         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
8229         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
8230
8231         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
8232         presence of frame pointer elimination.
8233
8234 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
8235         
8236         * mini-x86.h: NetBSD UCONTEX_REG defines.
8237
8238 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
8239
8240         * inssel-amd64.brg: Fix amd64 build.
8241
8242 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
8243
8244         * mini.h: remove extern to workaround what looks likes gcc bug 26905
8245         on amd64.
8246
8247 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
8248
8249         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
8250         ends.
8251
8252         * mini-<ARCH>.c: Use mono_is_regsize_var ().
8253
8254 2007-01-30 Mark Mason <mason@broadcom.com>
8255
8256            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
8257            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
8258            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
8259            beginning support for CEE_JMP [not quite working yet]
8260            * tramp-mips.c: LMF handling now works
8261         
8262 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
8263
8264         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
8265
8266         * mini.h (NULLIFY_INS): New macro.
8267
8268 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8269
8270         * mini.c: statistical profiler fix for windows, patch
8271         from Tor Lillqvist (tml@novell.com).
8272
8273 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
8274         * local-propagation.c: Fix bug 80591.
8275
8276 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8277
8278         * Makefile.am: put back the --export-dynamic option as with
8279         the previous gmodule flags (thanks to Robert Jordan).
8280
8281 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
8282
8283         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
8284
8285         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
8286         simplify and speed up the local register allocator. Also rename some fields
8287         like iassign->vassign.
8288         
8289         * regalloc.c: Remove some functions which are no longer used since their
8290         inlined version is in mini-codegen.c.
8291         
8292         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
8293
8294         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
8295
8296 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
8297
8298         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
8299         narrowing. Fixes #80622.
8300
8301         * iltests.il: Add new regresssion test. 
8302
8303 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8304
8305         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
8306         debug-debugger.c, debug-debugger.h: warning fixes.
8307         * driver.c: updated copyright year and made it fit in one line.
8308
8309 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
8310
8311         * aot-runtime.c: updated to use mono-dl instead of gmodule.
8312
8313 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
8314
8315         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
8316
8317         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
8318
8319         * iltests.il: Add new test for bug #80507.
8320
8321 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8322
8323         * mini-arm.h: use soft-float also on vfp for now.
8324
8325 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8326
8327         * mini.c: fix some more soft-float issues.
8328
8329 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
8330
8331         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
8332
8333 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
8334         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
8335         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
8336         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
8337
8338 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
8339
8340         * mini-arm.c: typo fix.
8341
8342 2007-01-23  Neale Ferguson <neale@sinenomine.net>
8343
8344         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
8345
8346 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
8347
8348         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
8349         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
8350
8351         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
8352
8353         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
8354
8355         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
8356         
8357         * inssel.brg: Fix a warning.
8358
8359         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
8360
8361         * abcremoval.c ssa.c ssapre.c: Update after this change.
8362         
8363         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
8364
8365         * dominators.c (df_set): Use mono_bitset_union_fast.    
8366
8367 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8368
8369         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
8370         mini-codegen.c: reduce relocations and memory usage for the cpu
8371         description.
8372
8373 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
8374
8375         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
8376
8377         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
8378         to reduce their size.
8379
8380 2007-01-19 Mark Mason <mason@broadcom.com>
8381
8382         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
8383         * mini-mips.c: more configuration macros, support long conditional branches, additional
8384         asserts, fix epilog instrumentation.
8385         * mini-mips.h: use standard stack walk
8386         * cpu-mips.md: increase size of div, rem and conditional branches
8387         
8388 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
8389
8390         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
8391         to cpu spec data.
8392
8393 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
8394
8395         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
8396         (compile_method): Ditto.
8397
8398         * aot-runtime.c (decode_klass_info): Ditto.
8399
8400         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
8401         needed by the code generated by inssel.brg. Also fix a warning.
8402
8403 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
8404
8405         * mini.c: deal with enums that become genericinsts by
8406         being nested in a generic class (bug #79956).
8407
8408 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8409
8410         * mini.c: match the generic definition to check for
8411         private access with generic types (bug #78431).
8412
8413 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
8414
8415         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
8416         to make life easier for people cross-compiling that insist on not
8417         using scratchbox.
8418
8419 2007-01-17 Mark Mason <mason@broadcom.com>
8420
8421         * inssel-long.brg: patch to deal with mips missing flags
8422         * inssel-long32-mips.brg: implement overflow checks
8423         * insset-mips.brg: implement overflow checks
8424         * mini-mips.h: implement conditional exception handling
8425         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
8426           Remove unused code, minor cleanups.
8427         * exceptions-mips.c: minor cleanups
8428         * mini-ops.h: add mips conditional exception ops
8429         * cpu-mips.md: add mips conditional exception ops
8430
8431         
8432 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8433
8434         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
8435         to deal with mips missing of flags.
8436
8437 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8438
8439         * exceptions-ppc.c: execute fault handlers.
8440
8441 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
8442
8443         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
8444
8445 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
8446
8447         * mini.c: handle also floating point values in initialize_array.
8448
8449 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8450
8451         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
8452         array initialization and make it conditional on the intrins option.
8453
8454 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8455
8456         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
8457         relocations and put the patch info names close to the enum definition.
8458
8459 2007-01-15 Mark Mason <mason@broadcom.com>
8460
8461         * basic.cs, exceptions.cs: break up large tests to increase debugability.
8462
8463 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8464
8465         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
8466
8467 2007-01-12  Raja R Harinath  <rharinath@novell.com>
8468
8469         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
8470
8471 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
8472
8473         * Makefile.am: distribute the mips sources.
8474
8475 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8476
8477         * mini-codegen.h: handle bug #80489 here, by excluding ecx
8478         directly.
8479
8480 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
8481
8482         * cpu-x86.md: back out for now as this triggers other regressions.
8483
8484 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8485
8486         * cpu-x86.md: force src1 and dest regpair for long shift instructions
8487         to eax:edx, so ecx can't get allocated to them (bug #80489).
8488
8489 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
8490
8491         * mini.c, mini-exceptions.c: enabled running fault handlers
8492         (bug #80469).
8493
8494 2007-01-03  Miguel de Icaza  <miguel@novell.com>
8495
8496         * driver.c: If nothing fail, do not use the string "failed",
8497         because it makes it very annoying to view test result logs on the
8498         web. 
8499
8500 2006-12-30  Miguel de Icaza  <miguel@novell.com>
8501
8502         * debug-debugger.c (mono_debugger_main): Rename "main" to
8503         "main_method" to prevent a warning.
8504
8505         Remove a warning for unused field.
8506
8507 2006-12-28  Martin Baulig  <martin@ximian.com>
8508
8509         * debug-debugger.c
8510         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
8511
8512 2006-12-22  Martin Baulig  <martin@ximian.com>
8513
8514         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
8515         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
8516         seperate `.mdb_debug_info' section, so we can access it from the
8517         debugger even if the binary is stripped.
8518
8519         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
8520         from the `.mdb_debug_info' here to prevent the linker from
8521         removing that section.
8522
8523         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
8524         mdb-debug-info64.s.
8525
8526 2006-12-19  Robert Jordan  <robertj@gmx.net>
8527
8528         * mini-x86: enable the code to return small structures in
8529         registers for FreeBSD as well. Fixes bug #80278.
8530         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
8531
8532 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8533
8534         * mini-x86.c: align the stack when calling the profiler
8535         function instrumenting the prolog (on OSX).
8536
8537 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
8538
8539         * mini.c: emit a break opcode where Debugger.Break () is called.
8540
8541 2006-12-13  Miguel de Icaza  <miguel@novell.com>
8542
8543         * mini.c (mono_method_to_ir): Provide useful information on this
8544         assert, to prevent others from debugging like I did.
8545
8546 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8547
8548         * mini.c: enable code which was incorrectly commented
8549         (bug #80235).
8550
8551 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8552
8553         * mini-x86.c: enable on OSX, too, the code to return small
8554         structures in registers.
8555
8556 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
8557
8558         * mini-x86.c: remove the use of the dynamic code manager here, too.
8559
8560 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
8561
8562         * mini.h, debug-debugger.c, tramp-*.c: fixed 
8563         mono_debugger_create_notification_function() to use
8564         mono_global_codeman_reserve () instead of a dynamic code manager.
8565
8566 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
8567
8568         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
8569         ves_array_element_address() jit icall and use a generated
8570         managed method instead (which is about 4 times faster for a rank 3
8571         array access).
8572
8573 2006-11-29  Mark Mason  <mason@broadcom.com>
8574
8575         * basic-calls.cs: additional tests for passing
8576         structures as function arguments.
8577
8578 2006-11-29  Mark Mason  <mason@broadcom.com>
8579
8580         * mini-mips.h: disable custom exception handling
8581         * mini-mips.c: throw/rethrow should use jalr to call
8582         exception stubs.  Fixed bug with passing structures
8583         by value. More support for tracing floating point
8584         functions.
8585
8586 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8587
8588         * mini.c: fixed typo in the soft-float ldind.r4 handling
8589         (bug #80086).
8590
8591 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8592
8593         * mini.c, mini.h, driver.c: added --runtime command line
8594         option to select a different runtime than the autodetected one.
8595         * jit.h: added API for embedders to initialize with a specific
8596         runtime version.
8597
8598 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
8599
8600         * mini.c: handle also boxing of r4 values (bug #80024).
8601
8602 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
8603
8604         * mini-ppc.c: force indirect calls until we reserve
8605         enough address space for all the generated code.
8606
8607 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
8608
8609         * exceptions-arm.c: workaround bugs in the libc definition
8610         of struct ucontext.
8611
8612 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
8613
8614         * inssel.brg: fixes from me and Mark Mason.
8615
8616 2006-11-23  Dick Porter  <dick@ximian.com>
8617
8618         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
8619         semaphore display now we've fixed the initial value
8620
8621 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8622
8623         * inssel.brg: partially revert the last change to fix the build.
8624
8625 2006-11-21  Mark Mason  <mason@broadcom.com>
8626
8627         * inssel.brg: Add and use compare-and-branch macros to support
8628         architectures that do not have condition code registers (ie. MIPS).
8629         * *-mips.{c,brg,md}: Fix copyright statements
8630
8631 2006-11-20  Mark Mason  <mason@broadcom.com>
8632
8633         * Makefile.am: remove mini-codegen.c from list of MIPS sources
8634         * mini.c: Allow GET_CONTEXT to be specified by the arch port
8635         * mini.h: Added declaration for mono_print_ins()
8636         * mini-codegen.c: added ins_spec initializer for MIPS
8637         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
8638         vreg to be virtual and hreg to be non-virtual.
8639         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
8640         is not yet working/implemented correctly.
8641         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
8642         non-static, fixup calls to print_ins() from other parts in the file.
8643
8644 2006-11-20  Mark Mason  <mason@broadcom.com>
8645
8646         * basic-calls.cs: added tests for passing structures as arguments
8647         to calls.
8648
8649 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
8650
8651         * inssel-long32.brg: optimize signed division by power of two.
8652
8653 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
8654
8655         * mini-arm.c: added support for interworking with thumb code
8656         (mono must be still be built using the ARM instruction encoding).
8657
8658 2006-11-19  Miguel de Icaza  <miguel@novell.com>
8659
8660         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
8661         verifier has different rules for it.   Fixes a few verifier issues
8662         in the test suite.
8663
8664         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
8665         at the end, so people know what happened.
8666
8667 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
8668
8669         * brach-opts.c: in optimize_exception_target() make sure we
8670         are in a catch clause (fixes bug #79871).
8671
8672 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8673
8674         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
8675         more soft-float support fixes.
8676
8677 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
8678
8679         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
8680         that are passed half on the stack and half in registers.
8681
8682 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
8683
8684         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
8685         more mips integration work from Mark E Mason 
8686         <mark.e.mason@broadcom.com>.
8687
8688 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8689
8690         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
8691         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
8692         tramp-mips.c: added sources for the mips port, not
8693         integrated in the build yet. Contributed by
8694         Mark E Mason <mark.e.mason@broadcom.com>.
8695
8696 2006-11-14  Neale Ferguson <neale@sinenomine.net>
8697
8698         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
8699
8700 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8701
8702         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
8703         put the soft-float rules in its own file since it seems to
8704         break s390 compilation.
8705
8706 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8707
8708         * mini-arm.c: fixed wrnings.
8709
8710 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
8711
8712         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
8713         inssel-arm.brg: ARM support for soft-float.
8714
8715 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8716
8717         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
8718         loads and stores of 32 bit fp values.
8719
8720 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
8721
8722         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
8723
8724         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
8725         works. Fixes #79852 and #79463.
8726
8727 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8728
8729         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
8730         more soft-float support WIP and fixes.
8731
8732 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
8733
8734         * mini-arm.c: some VFP updates.
8735
8736 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
8737
8738         * mini-exceptions.c: 0 is a valid local var offset in some
8739         architectures, don't assert (bug #78508).
8740
8741 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
8742
8743         * exceptions-arm.c: fixed off by one error in stack walk code.
8744
8745 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
8746
8747         * mini.h, mini.c: more precise tracking of type load exceptions.
8748
8749 2006-11-03  Robert Jordan  <robertj@gmx.net>
8750
8751         * Makefile.am: [WIN32] Add monow.exe target.
8752         * driver.c: [WIN32] Don't detach the console when debugging.
8753         Fixes bug #79797.
8754         
8755 2006-10-30  Miguel de Icaza  <miguel@novell.com>
8756
8757         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
8758
8759 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
8760
8761         * aot-compiler.c (emit_method_info): Add a case missed earlier.
8762
8763         * driver.c (mini_regression): Fix --regression with AOT.
8764
8765         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
8766
8767 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
8768
8769         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
8770
8771         * mini-sparc.h: Don't use sigaction on sparc/linux.
8772
8773         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
8774
8775         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
8776
8777         * mini-exceptions.c: Add proper include files for getpid ().
8778
8779 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
8780
8781         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
8782         address instead of a MonoJitInfo* to avoid decoding the exception info for the
8783         method.
8784
8785         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
8786         name cache to reduce its size.
8787
8788         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8789
8790 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
8791
8792         * mini-x86.c: Save/restore the current LMF structure more efficiently using
8793         the mono_lmf TLS variable.
8794
8795         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
8796         trampoline lmf frames.  
8797
8798         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
8799
8800 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
8801
8802         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
8803         the mono_lmf TLS variable.
8804
8805         * mini-exceptions.c: Access the LMF structure through accessors.
8806
8807         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
8808         variable instead of in jit_tls->lmf.
8809
8810         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
8811         
8812         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
8813         trampoline lmf frames.
8814
8815         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
8816
8817 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
8818
8819        * mini.c trace.c mini-x86.c: Revert these too.
8820         
8821        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
8822        signature change.
8823
8824 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
8825
8826         * genmdesc.c: removed now dead code.
8827
8828 2006-10-09  Robert Jordan <robertj@gmx.net>
8829
8830         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
8831
8832 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
8833
8834         * mini.h: do not leave gaps in the opcode values.
8835
8836 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
8837
8838         * jit-icalls.h: flag functions as internal here, too.
8839
8840 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
8841
8842         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
8843         functions with the internal attribute.
8844
8845 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
8846
8847         * aot-compiler.c: fclose the file descriptor in the profile read loop.
8848
8849 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
8850
8851         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
8852         for soft-float.
8853
8854 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
8855
8856         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
8857         tail calls as on other platforms.
8858
8859         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
8860
8861         * iltests.il: Add a few tailcall tests.
8862
8863 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8864
8865         * driver.c: fix loop for old compilers (bug #79521).
8866
8867 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
8868
8869         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
8870
8871         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
8872
8873         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
8874         metadata without any code.
8875
8876         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
8877         more precise debugging information using gdb.
8878
8879 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
8880
8881         * inssel-ia64.brg: Make the helper methods static.
8882
8883 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8884
8885         * inssel-x86.brg: make the helper methods static.
8886
8887 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
8888
8889         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
8890
8891 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8892
8893         * mini.c: updates for monoburg changes.
8894         * inssel.brg: make a few helper functions static as they should.
8895
8896 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
8897
8898         * Makefile.am: Move mini-codegen.c to common_sources.
8899
8900 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8901
8902         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
8903         instructions.
8904         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
8905         mini-ppc.h: port to use the common local register allocator.
8906
8907 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8908
8909         * mini.h: Remove the comment too then.
8910
8911 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
8912
8913         * mini.h: put back backend.data which is to be used shortly and
8914         doesn't increase the size of MonoInst. If any 64 bit arch aligned
8915         pointers on 4 byte boundaries it'd have much bigger issues running
8916         and you can ifdef it out anyway.
8917
8918 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8919
8920         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
8921         MonoInst size by 4 bytes on 64 bit machines.
8922
8923 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
8924
8925         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
8926         replacement with more meaningful field names. Arch maintainers, please
8927         check the assigned names are good enough for your arch.
8928
8929 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8930
8931         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
8932         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
8933
8934 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8935
8936         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
8937         relocations and memory requirements, put the optimization flags
8938         definitions in their own file.
8939
8940 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
8941
8942         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
8943
8944         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
8945
8946 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
8947
8948         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
8949
8950 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
8951
8952         * inssel.brg: use the correct function to get the size of an item
8953         in an array, given an element class.
8954         * aot-compiler.c: do not access class->class_size directly.
8955
8956 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8957
8958         * mini.h, debug-mini.c: added a debugging function to print
8959         info about local variables and arguments in a jitted method.
8960
8961 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
8962
8963         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
8964
8965         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
8966
8967 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8968
8969         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
8970         inner and outer loops when passing vtypes.
8971
8972 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
8973
8974         * mini-ppc.c: take into account the cpu errata for cache flushing
8975         which caused some random errors (bug #79381).
8976
8977 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8978
8979         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
8980         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
8981
8982 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
8983
8984         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
8985         loaded.
8986
8987         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
8988         freebsd ports tree.
8989
8990         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
8991         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
8992
8993         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
8994         displacement.
8995
8996 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
8997
8998         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
8999
9000 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
9001
9002         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
9003         macro does not have to be changed during debugging.
9004
9005         * 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>.
9006
9007         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
9008
9009         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
9010         
9011         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
9012         MONO_ARCH_NO_EMULATE_MUL is defined.
9013
9014         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
9015
9016         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
9017
9018         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
9019
9020         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
9021         
9022 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
9023
9024         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
9025         stuff to mini-exceptions.c where it is used.
9026
9027         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
9028         setup code, the real one is in mini-exceptions.c.
9029
9030         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
9031         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
9032         some changes from the freebsd ports tree.
9033
9034         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
9035         constants.
9036         
9037         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
9038
9039 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
9040
9041         * mini.c: on Linux, check for /proc to be mounted
9042         (bug# 79351, novell bug#201204).
9043
9044 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
9045
9046         * mini.c: handle cases where pthread_attr_getstack() behaves
9047         incorrectly (bug #78096).
9048
9049 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
9050
9051         * mini-arm.c: support larger stack frames (bug #79272).
9052
9053 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
9054
9055         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
9056
9057         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
9058         tokens.
9059
9060         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
9061         mono_class_from_name () to find a class from its name.
9062
9063         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
9064
9065 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
9066
9067         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
9068
9069 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
9070
9071         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
9072
9073 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
9074
9075         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
9076         callinfo->trampoline.
9077
9078         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
9079         fixes #79271.
9080         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
9081         future.
9082
9083 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
9084
9085         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
9086
9087 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
9088
9089         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
9090         stats.method_trampolines, it is already done by the generic trampoline code.
9091
9092         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
9093         
9094 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
9095
9096         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
9097
9098         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
9099
9100         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
9101
9102         * mini.c (print_jit_stats): Print mscorlib mempool size too.
9103         
9104         * mini.c (print_jit_stats): Print new stats.
9105
9106         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
9107
9108 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
9109
9110         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
9111         Address on two dimensional arrays. Fixes #78729.
9112
9113         * mini.h (MonoCompile): Add a 'skip_visibility' field.
9114
9115         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
9116         a method.
9117
9118         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
9119
9120         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
9121         #79130.
9122         
9123         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
9124         a race condition.
9125         (mini_get_ldelema_ins): Ditto.
9126
9127 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
9128
9129         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
9130         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
9131         Fixes #79213.
9132
9133 2006-08-29 Neale Ferguson <neale@sinenomine.net>
9134
9135         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
9136         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
9137
9138         * exceptions-s390x.c: Cosmetic change.
9139
9140         * tramp-s390.c: Fix warning.
9141
9142         * cpu-s390.md: Correct length of mul_imm.
9143
9144 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
9145
9146         * aot-compiler.c: added binary writer with ELF backend
9147         implementation (only on Linux/x86 for now).
9148
9149 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
9150
9151         * Makefile.am: Don't run net 2.0 AOT tests.
9152
9153         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
9154         (mono_compile_assembly): Skip net 2.0 assemblies as well.
9155
9156         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
9157
9158 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9159
9160         * aot-compiler.c: simplified and refactored the asm-writing code
9161         to allow different backends.
9162
9163 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
9164
9165         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9166
9167         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
9168         little. Share patches of type TYPE_FROM_HANDLE as well.
9169
9170         * mini.c (mono_patch_info_equal): New helper function.
9171         (mono_patch_info_hash): Ditto.
9172
9173         * aot-compiler.c (emit_method_code): Fix s390 build.
9174
9175         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
9176         is not handled because it is stored as a flag and not as a type ctor. Fixes
9177         #79016.
9178
9179 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
9180
9181         * aot-compiler.c: Fix computation of GOT slot statistics.
9182         
9183         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
9184         Also remove support for not PIC AOT.
9185
9186         * mini.h: Bump AOT file format version.
9187
9188         * objects.cs: Add a test for #78990.
9189
9190         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
9191         (peter.dettman@iinet.net.au). Fixes #79087.
9192
9193         * basic-long.cs: Add a test for the above.
9194
9195 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
9196
9197         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
9198         
9199         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
9200         code somewhat.
9201
9202 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
9203
9204         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
9205         exceptions.
9206
9207 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
9208
9209         * mini.c: Don't verify COM proxy invoke calls
9210         
9211
9212 2006-08-10  Dick Porter  <dick@ximian.com>
9213
9214         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
9215         which process is holding semaphores locked.
9216
9217 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
9218
9219         * mini-ia64.c mini-amd64.c: Fix #79027.
9220
9221         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
9222
9223         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
9224
9225         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
9226         implicit arguments in a vararg call. Fixes #79027.
9227
9228 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
9229
9230         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
9231         (mono_get_array_new_va_signature): Ditto.
9232
9233 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
9234
9235         * aot-runtime.c: Call init_plt lazily.
9236
9237         * inssel-long.brg: Fix unsigned long->int conversion.
9238
9239         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
9240
9241         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
9242         that most data is now in the .rss/.data section.
9243
9244 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
9245
9246         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
9247
9248         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
9249
9250         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
9251
9252         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
9253
9254         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
9255         virtual call. Fixes #79010.
9256
9257         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
9258         and use the result as the this argument in the real call.
9259
9260         * generics.2.cs: Add a new test for #79010.
9261         
9262 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
9263
9264         * mini-x86.c: Fix a warning.
9265
9266         * aot-compiler.c: Add a bunch of statistics.
9267
9268         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
9269
9270 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
9271
9272         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
9273
9274 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
9275
9276         * 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>.
9277
9278 2006-07-13  Miguel de Icaza  <miguel@novell.com>
9279
9280         * mini.c (mono_method_to_ir): Obtain the original method in the
9281         CIL stream and use this to perform validation.
9282
9283         Fixed: #78816
9284
9285 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
9286
9287         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
9288         (mono_arch_call_opcode): Ditto.
9289
9290         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
9291         #78826.
9292
9293         * mini.c (mono_patch_info_dup_mp): New helper function.
9294         
9295         * aot-compiler.c (compile_method): Fix some of the memory allocated during
9296         compilation. Fixes #78827.
9297
9298 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
9299
9300         * declsec.c: Use original security informations for
9301           MONO_WRAPPER_MANAGED_TO_MANAGED.
9302
9303 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
9304
9305         * mini.c: Allow Com Interop methods/classes and
9306         don't verify COM wrapper calls
9307         
9308
9309 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
9310
9311         * inssel-long32.brg: Fix long->i4 checked conversion.
9312
9313         * exceptions.cs: Add a test for the above.
9314
9315 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
9316
9317         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
9318
9319         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
9320         leaks.
9321
9322         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
9323         #78775.
9324
9325 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
9326
9327         * mini.c: Fix solaris/x86 exception handling.
9328
9329         * Makefile.am: Get rid of $(ICU_LIBS).
9330
9331 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
9332
9333         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
9334         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
9335         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
9336
9337         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
9338
9339         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
9340         this function causes a SIGSEGV.
9341
9342 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
9343
9344         * mini.c: Remove unused solaris/x86 includes.
9345
9346 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
9347
9348         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
9349
9350 2006-06-20  Jb Evain  <jbevain@gmail.com>
9351
9352         * cpu-g4.md: fix max length of start_handler instruction.
9353
9354 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
9355         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
9356
9357 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
9358         * ssa.c: Fixed bug 78653 for SSA based deadce.
9359         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
9360         MonoInst.flags, used in SSA based deadce.
9361         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
9362         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
9363
9364 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
9365
9366         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
9367         it can end up using non executable memory on ppc64 systems
9368         running ppc32 userspace (fix from Johannes Berg).
9369
9370 2006-06-14  Dick Porter  <dick@ximian.com>
9371
9372         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
9373         4.1.1
9374
9375 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
9376         * mini.c: Made so that inline is locally disabled if it would
9377         trigger a .cctor, because too many apps depend on this behavior
9378         (which seems to be also the one of the MS CLR).
9379
9380 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
9381
9382         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
9383         No idea why this worked before.
9384
9385         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
9386         which branch to outer exception clauses since they could skip the
9387         inner finally clauses. Fixes #78633.
9388
9389         * exceptions.cs: Add a test for the above.
9390
9391         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
9392         Fixes #78629.
9393
9394         * iltests.il: Add a test for the above.
9395
9396 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
9397
9398         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
9399         after the end of a try bblock, to prevent asserts in mini_method_compile ().
9400
9401         * iltests.il: Add a test for the above.
9402
9403 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
9404
9405         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
9406         
9407         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
9408         methods as instrinsics.
9409
9410 2006-06-09  Wade Berrier <wberrier@novell.com>
9411
9412         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
9413         (simple-cee-ops.h ssapre-mini-ops.h)
9414
9415 2006-06-09  Neale Ferguson <neale@sinenomine.net>
9416
9417         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
9418         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
9419         instruction).
9420         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
9421         * cpu-s390x.md: Fix max. length values for a couple of instructions.
9422
9423 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
9424
9425         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
9426
9427 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
9428
9429         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
9430         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
9431         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
9432         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
9433         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
9434         of opcodes, so that bug 78549 should not happen again.
9435         * ssapre.c: Updated to use the renamed files.
9436
9437 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
9438
9439         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
9440         in OP_ATOMIC_EXCHANGE_I4.
9441
9442 2006-06-07  Wade Berrier <wberrier@novell.com>
9443
9444         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
9445         in mono_debugger_create_notification_function)
9446
9447 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
9448
9449         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
9450         
9451         * mini.c (type_from_stack_type): Disable some changes which do not
9452         seem to work.
9453
9454         * driver.c: Reenable opts.
9455
9456         * mini.h (MonoStackSlot): New structure to keep track of the verification state
9457         of the evaluation stack.
9458         
9459         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
9460         evaluation stack trace at entry to the bblock.
9461
9462         * mini.c (merge_stacks): New function to perform verification of stack merges.
9463         Turned off by default.
9464
9465         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
9466         STACK_MP.
9467         
9468 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
9469
9470         * local-propagation.c: Fixed bug 78549.
9471
9472 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
9473
9474         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
9475
9476 2006-06-02  Miguel de Icaza  <miguel@novell.com>
9477
9478         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
9479         tramp-arm.c, tramp-ia64.c
9480         (mono_debugger_create_notification_function): Update signature to
9481         new signature and use new protocol for creating the notification
9482         function.  
9483
9484         Should fix the build.
9485
9486 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
9487
9488         * exceptions-ppc.c (mono_jit_walk_stack)
9489         (ves_icall_get_frame_info): Fix the build
9490
9491 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
9492
9493         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
9494
9495 2006-05-31  Raja R Harinath  <rharinath@novell.com>
9496
9497         * il2tests.2.il: New file for generics CIL tests.  Add test for
9498         #78019.
9499         * Makefile.am: Update.
9500
9501         Fix #78019
9502         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
9503         to nullable types.
9504
9505 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
9506
9507         * aliasing.c: Fixed bug 78311.
9508
9509 2006-05-29  Martin Baulig  <martin@ximian.com>
9510
9511         * mini-exceptions.c (mono_find_jit_info): When computing the
9512         native offset, check whether we're actually inside the method's
9513         code; call mono_debug_print_stack_frame() to format the frame.
9514         (ves_icall_System_Exception_get_trace): Call
9515         mono_debug_print_stack_frame() to format the stack frame.
9516         (ves_icall_get_trace): Update to the new debugging API.
9517         (mono_jit_walk_stack_from_ctx): Likewise.
9518         (ves_icall_get_frame_info): Likewise.
9519
9520         * mini.c (get_method_from_ip): Use the new debugging API.
9521         (mono_print_method_from_ip): Likewise.
9522
9523         * exceptions-ppc.c
9524         (mono_jit_walk_stack): Use the new debugging API.
9525         (ves_icall_get_frame_info): Likewise.   
9526
9527 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
9528
9529         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
9530
9531 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
9532
9533         * mini.c: Added "limitator" to inline for debugging.
9534
9535 2006-05-24  Martin Baulig  <martin@ximian.com>
9536
9537         * debug-debugger.c (mono_debugger_init): Create a private,
9538         malloc()-based code manager for the notification function and
9539         intentionally leak it on exit.  This fixes the crash-on-exit race
9540         condition.
9541
9542         * tramp-amd64.c
9543         (mono_debugger_create_notification_function): Added
9544         `MonoCodeManager *' argument.
9545
9546         * tramp-x86.c
9547         (mono_debugger_create_notification_function): Added
9548         `MonoCodeManager *' argument.
9549
9550 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
9551
9552         * aliasing.c: Fixed 64 bit issue.
9553         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9554         default since all known bugs are fixed (one more time!).
9555
9556 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9557
9558         * mini.c: write barrier support.
9559
9560 2006-05-23  Martin Baulig  <martin@ximian.com>
9561
9562         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
9563         check at the top of the file.
9564
9565 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
9566
9567         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
9568         reverting changes without reason and without changelog entries.
9569
9570 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
9571
9572         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
9573         to a few opcodes. Fixes #78439.
9574
9575         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
9576         consistency with other archs.
9577
9578         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
9579
9580 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9581
9582         * debug-debugger.c: fix the build.
9583
9584 2006-05-17  Martin Baulig  <martin@ximian.com>
9585
9586         * debug-debugger.c
9587         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
9588         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
9589         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
9590         (debugger_attach): Call GC_mono_debugger_add_all_threads().
9591
9592 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
9593
9594         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
9595
9596 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
9597
9598         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
9599         MONO_TYPE_GENERICINST.
9600         
9601         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
9602         MONO_TYPE_GENERICINST.
9603
9604 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
9605
9606         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
9607         #78325.
9608
9609 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
9610
9611         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
9612         mempool.
9613         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
9614
9615 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
9616
9617         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
9618         mono_trace_cleanup ().
9619
9620         * iltests.il: Fix problem with the newly added test.
9621
9622         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
9623         due to register constraints, free up the previous hreg. Fixes #78314.
9624
9625         * iltests.il: Add new test for #78314.  
9626
9627         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
9628         Interlocked.Add. Fixes #78312.
9629
9630         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
9631         
9632 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
9633
9634         * inssel.brg (mini_emit_virtual_call): Fix a warning.
9635
9636 2006-05-05  Martin Baulig  <martin@ximian.com>
9637
9638         * debug-mini.c (mono_debug_open_block): New method.
9639
9640         * mini-amd64.c
9641         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9642         the beginning of each basic block.
9643
9644         * mini-x86.c
9645         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9646         the beginning of each basic block.
9647
9648 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9649
9650         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9651         default until I understand why they break the build on amd64.
9652
9653 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
9654
9655         * mini.c (mini_cleanup): Call mono_cleanup ().
9656
9657         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
9658         errors.
9659
9660 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9661
9662         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
9663         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9664         default since all known bugs are fixed, and I cannot reproduce bug
9665         77944... I'm asking Matt Hargett to test again after this commit.
9666
9667 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
9668
9669         * mini-codegen.c: Fixed typo that thrashed inline.
9670
9671 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
9672
9673         * dominators.c (compute_dominators): Avoid using a worklist since
9674         it is not correct in some cases. Instead, iterate over all bblocks as
9675         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
9676
9677 2006-04-28  Miguel de Icaza  <miguel@novell.com>
9678
9679         * mini.c (mono_jit_compile_method_inner): Use
9680         mono_prepare_exception_from_error that resets the value
9681         internally.
9682
9683 2006-04-27  Miguel de Icaza  <miguel@novell.com>
9684
9685         * mini.c: Move the mini_loader_error_to_exception to metadata. 
9686         
9687 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9688
9689         * aliasing.c: Fixed bug 78210.
9690
9691 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9692
9693         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9694         default until all their problems (or the ones they trigger) are fixed.
9695
9696 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
9697
9698         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
9699         
9700         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
9701         as loaded only after resolving patches since that could invoke the same method.
9702
9703         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
9704
9705         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
9706         functions.
9707
9708         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
9709         AOT loader.
9710
9711         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
9712         stack.
9713
9714         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
9715         made from AOT code through the PLT table.
9716
9717         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
9718         holding the plt offset when a call is made to the aot plt trampoline.
9719         
9720 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9721
9722         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
9723         amd64 AOT support.
9724
9725         * Makefile.am (common_sources): Fix build breakage.
9726
9727         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
9728         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
9729         intra-assembly calls if possible.
9730         
9731         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
9732
9733         * mini-trampolines.c: Handle PLT entries.
9734
9735         * mini.c: Avoid creating a GOT var for calls.
9736
9737         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
9738         from mscorlib code.
9739
9740         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
9741         from mscorlib code.
9742
9743         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
9744         AOT code.       
9745
9746         * mini.h: Bump AOT file format version.
9747         
9748         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
9749         covers more cases.
9750
9751 2006-04-25  Martin Baulig  <martin@ximian.com>
9752
9753         * driver.c: Disable copyprop, consprop and inline when running
9754         inside the debugger.
9755
9756 2006-04-25  Martin Baulig  <martin@ximian.com>
9757
9758         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
9759         with `get_current_thread' and added `detach'.
9760         (MonoDebuggerMetadataInfo): Added `thread_size',
9761         `thread_tid_offset', `thread_stack_ptr_offset' and
9762         `thread_end_stack_offset'.
9763
9764 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9765
9766         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
9767         aot-runtime.c.
9768
9769         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
9770         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
9771
9772         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
9773
9774         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
9775
9776         * aot.c: Add support for ADJUSTED_IID.  
9777
9778 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
9779
9780         * aot.c (emit_method_order): Don't align method_order_end.
9781
9782         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
9783         the interface ID changes.
9784
9785 2006-04-21  Dick Porter  <dick@ximian.com>
9786
9787         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
9788         cleaning up a thread.  Fixes the new part of bug 77470.
9789
9790 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
9791
9792         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
9793         to managed wrapper.
9794                      
9795 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
9796
9797         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
9798         
9799         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
9800         SIGSEGV. Fixes #78072.
9801
9802         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
9803         unregister our SIGABRT handler.
9804
9805 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
9806
9807         * mini.c: Disabled inline where it can alter the call stack in a
9808         way visible from managed code.
9809         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
9810         default.
9811
9812 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
9813
9814         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
9815         on other platforms. Fixes #78089.
9816
9817 2006-04-13  Martin Baulig  <martin@ximian.com>
9818
9819         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
9820         determine whether we're inside the debugger.
9821
9822         * debug-debugger.h
9823         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
9824
9825 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9826
9827         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
9828         handler clauses. Fixes #78024.
9829
9830         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
9831         in the CALL_MEMBASE opcodes. Fixes #78088.
9832         (mono_arch_get_vcall_slot_addr): Ditto.
9833
9834 2006-04-10  Martin Baulig  <martin@ximian.com>
9835
9836         * debug-debugger.c: The thread handling code has now been moved
9837         into ../metadata/threads.c.
9838
9839 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9840
9841         * driver.c (mono_main): Fix --with-gc=none build.
9842
9843         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
9844         (mono_spillvar_offset_float): Ditto.
9845         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
9846         hreg, not when its !global, since on ia64, there is a third category: stacked
9847         registers.      
9848
9849 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
9850
9851         * mini.c: set MonoInst->klass for load field address and a few other
9852         places.
9853
9854 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9855
9856         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
9857
9858 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
9859
9860         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
9861         the branch opt changes.
9862
9863 2006-04-06  Dick Porter  <dick@ximian.com>
9864
9865         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
9866         
9867         * wapihandles.c (mini_wapi_seminfo): 
9868         * driver.c (mono_main): Add semaphore info option
9869
9870 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
9871
9872         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
9873         branch optimization changes. Fixes #78009.
9874
9875 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9876
9877         * mini.c: ignore accessibility of methods in managed->native wrappers.
9878
9879 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
9880
9881         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
9882         
9883         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
9884
9885 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
9886
9887         * mini.c: Modify the branch optimizations to preserve the invariant that
9888         the entries inside the in_bb and out_bb arrays are unique.
9889         (mono_unlink_bblock): Avoid creation of new arrays.
9890
9891 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
9892
9893         * mini.c (mono_unlink_bblock): Fix regression caused by previous
9894         change (#77992).
9895
9896 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
9897
9898         * mini.c (optimize_branches): Remove the "optimizations" in
9899         the cbranch1/cbranch2 -> branch cases which were causing several
9900         problems in the past. Fixes #77986.
9901
9902 2006-03-31  Chris Toshok  <toshok@ximian.com>
9903
9904         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
9905         default optimizations :(
9906
9907 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
9908
9909         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
9910         branch.
9911
9912 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
9913
9914         * local-propagation.c: Added comments to structs and removed
9915         "Mono" prefixes from local tree mover types.
9916
9917 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
9918
9919         * Makefile.am (arch_sources): Define this for each architecture so 
9920         libmono_la_SOURCES is defined in one place.
9921
9922 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
9923
9924         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
9925         from handles/.
9926
9927 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
9928
9929         * driver.c: print the GC name supplied by configure.
9930
9931 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
9932
9933         * local-propagation.c: Added tree mover, and moved here all the
9934         local propagation code from mini.c
9935         * mini.c: Added support for treeprop, and moved all the local
9936         propagation code to local-propagation.c
9937         * mini.h: Added support for treeprop
9938         * driver.c: Added support for treeprop, enabled consprop, copyprop,
9939         treeprop, inline and deadce by default
9940         * Makefile.am: Added local-propagation.c
9941
9942 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
9943
9944         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
9945
9946 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
9947
9948         * debug-debugger.c: make it compile without the Boehm GC.
9949
9950 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
9951
9952         * mini.c: fixed issue with mismatch when an icall is registered
9953         with multiple names but same address.
9954
9955 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
9956
9957         * declsec.c, mini-exceptions.c: use write barrier to set reference
9958         fields of managed objects.
9959
9960 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9961
9962         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
9963         (can_access_internals): Fix a warning.
9964
9965         * mini.c (print_method_from_ip): Rename this to 
9966         mono_print_method_from_ip so it gets exported.
9967
9968         * trace.c: Deal with strings inside StringBuilder's containing garbage
9969         and fix memory leaks. Fixes #77848.
9970
9971 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9972
9973         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
9974         fixes #77787.
9975
9976 2006-03-16 Neale Ferguson <neale@sinenomine.net>
9977         
9978         * mini-s390.c: Remove OP_X86_TEST_NULL.
9979
9980 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
9981
9982         * mini.c: use the correct GetHashCode() for the moving collector.
9983
9984 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
9985
9986         * liveness.c: Regalloc spill cost tuning.
9987
9988 2006-03-15 Neale Ferguson <neale@sinenomine.net>
9989         
9990         * mini-s390x.h: Correct S390_LONG macro.
9991
9992         * mini-s390x.c: Cleanup unused code.
9993
9994 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
9995
9996         * jit-icalls.h: New file.
9997
9998         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
9999         icalls and include that instead of including jit-icalls.c.
10000
10001         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
10002         OP_X86 opcodes.
10003
10004 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
10005
10006         * mini.c: when checking for member accessibility, also check for
10007         friend assemblies and for explicit interface implementations.
10008
10009 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
10010
10011         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
10012
10013         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
10014
10015         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
10016         common cases are done first.    
10017
10018         * mini-ops.h: Only define platform specific opcodes on the given platform.
10019
10020         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
10021         branch.
10022         
10023 2006-03-14  Martin Baulig  <martin@ximian.com>
10024
10025         Revert Paolo's change from r57348:
10026
10027         * mini.h: don't use gboolean for bitfields.
10028         * mini.c: verifier changes for fields and methods accessibility.
10029
10030 2006-03-13  Neale Ferguson <neale@sinenomine.net>
10031
10032         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
10033
10034         * mini-s390x.c: Fix conv_r_un.
10035
10036         * cpu-s390, cpu-s390x.md: Fix lengths.
10037
10038 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
10039
10040         * mini.c: nested types have access to all the nesting
10041         levels, not just the enclosing types.
10042
10043 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
10044
10045         * mini.c: added a few more verification checks.
10046
10047 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
10048
10049         * liveness.c: Merge optimizations from the linear-il branch.
10050
10051 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
10052
10053         * mini-ia64.c (emit_call): Add a comment.
10054
10055         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
10056
10057         * tramp-ia64.c: Fix some warnings.
10058
10059 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
10060
10061         * mini.h: don't use gboolean for bitfields.
10062         * mini.c: verifier changes for fields and methods accessibility.
10063
10064 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
10065
10066         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
10067         lazy icall wrapper changes.
10068
10069         * dominators.c: Replace all the dominator algorithms with faster
10070         ones from the linear-il branch.
10071
10072         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
10073         the mempool.
10074
10075         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
10076         common cases are done first.
10077
10078         * mini-amd64.c: Fix some warnings.
10079
10080         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
10081         from the mempool.
10082
10083         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
10084         added code.
10085
10086         * mini.h: Add a missing prototype.
10087
10088 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
10089
10090         * mini.c: Compile icall wrappers lazily.
10091
10092         * mini-codegen.c: Use printf instead of g_print since its much faster.
10093
10094         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
10095         function.
10096
10097         * mini.c (optimize_branches): Cache the negative result from 
10098         remove_block_if_useless ().
10099
10100         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
10101         Also fix some bblock linking issues.
10102
10103         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
10104         assembly files.
10105
10106         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
10107
10108         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
10109         accessed fields first, for better cache behavior.
10110         
10111 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10112
10113         * mini.c: speedup IList<T> array accesses.
10114
10115 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
10116
10117         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
10118         inline_costs counter. Fixes #77190.
10119
10120 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
10121
10122         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
10123         trace messages. Fixes #77706.
10124
10125 2006-03-04  Martin Baulig  <martin@ximian.com>
10126
10127         * tramp-amd64.c, tramp-x86.c
10128         (mono_debugger_create_notification_function): Use
10129         mono_global_codeman_reserve() to allocate a buffer at runtime and
10130         return it.
10131
10132         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
10133
10134         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
10135         notification function at runtime and then call `initialize' in the
10136         `MONO_DEBUGGER__debugger_info' vtable.
10137
10138 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
10139
10140         * iltests.il: Fix a visibility problem.
10141
10142 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
10143
10144         * driver.c, mini.c: add hooks for the counters API.
10145
10146 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
10147
10148         * driver.c: show disabled options.
10149
10150 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10151
10152         * linear-scan.c: always use cost-driven selection.
10153
10154 2006-02-28  Raja R Harinath  <rharinath@novell.com>
10155
10156         * jit-icalls.c (helper_compile_generic_method): Revert change from
10157         2006-02-24.
10158
10159 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
10160
10161         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
10162
10163 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
10164
10165         * inssel.brg: style fixes, mostly to force the updated monoburg
10166         to run for people using svn.
10167
10168 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
10169
10170         * mini.c: match monoburg changes.
10171
10172 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10173
10174         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
10175         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
10176         declaration in the header file.
10177
10178 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
10179
10180         * helpers.c: reduce relocations and mem usage.
10181
10182 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
10183
10184         * mini.h, mini-codegen.c: disable logging features if
10185         requested by configure.
10186
10187 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
10188
10189         * mini.c: tiny verifier changes.
10190
10191 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10192
10193         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
10194         cpu-pentium.md: stack alignment changes for osx/x86,
10195         partially from Geoff Norton <gnorton@customerdna.com>.
10196
10197 2006-02-24  Raja R Harinath  <harinath@gmail.com>
10198
10199         * jit-icalls.c (helper_compile_generic_method): Update to changes
10200         in metadata/class.c.
10201
10202 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
10203         
10204         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
10205         
10206         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
10207         interface calls with large offsets.
10208
10209 2006-02-23  Raja R Harinath  <rharinath@novell.com>
10210
10211         * jit-icalls.c (helper_compile_generic_method): Document the
10212         special-case we depend on so that we can inflate the method twice
10213         with the same context with no bad side-effects.
10214
10215 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
10216
10217         * mini-x86.c, mini-amd64.c: fix for case when xen support
10218         is disabled.
10219
10220 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
10221
10222         * mini-x86.c, mini-amd64.c: generate code to access tls items
10223         in a faster way for Xen systems.
10224
10225 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
10226
10227         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
10228         updates and compilation fixes for the OSX/x86 port, mostly from
10229         Geoff Norton <gnorton@customerdna.com>.
10230
10231 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10232
10233         * inssel.brg: faster interface call implementation
10234         to sync with the interface_offsets MonoVTable changes.
10235
10236 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
10237
10238         * mini.c: more verification checks.
10239
10240 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
10241
10242         * mini.c: added a few more verification checks.
10243
10244 2006-02-17      Neale Ferguson <neale@sinenomine.net>
10245
10246         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
10247         facility on the processor and use it if available.
10248
10249 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10250
10251         * driver.c, aot.c, mini.c: throw exception if the IL code is
10252         invalid or unverifiable.
10253
10254 2006-02-17  Raja R Harinath  <rharinath@novell.com>
10255
10256         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
10257         m.StructField.
10258
10259 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
10260
10261         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
10262
10263 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10264
10265         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
10266         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
10267         handling of instantiated generic valuetypes.
10268
10269 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
10270
10271         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
10272         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
10273         instead.
10274
10275         * generics.2.cs: Revert the nullable reftypes tests.
10276
10277 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
10278
10279         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
10280         using __builtin_frame_address (1) as it doesn't work in the presence
10281         of optimizations. Hopefully fixes #77273.
10282
10283         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
10284         -> generics.cs change as it doesn't work with some automake versions.
10285
10286 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10287
10288         * mini.c: handle systems that sue a different way to
10289         retrieve the stack address of the current thread.
10290
10291 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
10292
10293         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
10294         it specially in the makefile.
10295
10296         * generics.2.cs: Add tests for nullable reference types.
10297
10298 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10299
10300         * mini.c: always handle the case when mono_jit_init()
10301         is called in a thread different from the main thread,
10302         confusing libgc (bug #77309).
10303
10304 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
10305
10306         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
10307
10308 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10309
10310         * mini.c: change optimize_branches () to use a single loop
10311         and introduce a new optimization to simplify some range checks.
10312
10313 2006-02-03  Martin Baulig  <martin@ximian.com>
10314
10315         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
10316         and merged with debugger_thread_manager_add_thread().
10317         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
10318         inform the debugger about the main thread.
10319
10320 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
10321
10322         * basic.cs: Add test for div.un/rem.un constant folding.
10323
10324 2006-02-03  Neale Ferguson <neale@sinenomine.net>
10325
10326         * cpu-s390x.md: correct int_xor_imm length
10327
10328 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
10329
10330         * generics.2.cs: New test for #77442.
10331
10332         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
10333         #77442.
10334
10335 2006-02-02  Martin Baulig  <martin@ximian.com>
10336
10337         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
10338         <mono/metadata/mono-debug-debugger.h>   
10339
10340         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
10341
10342 2006-02-02  Martin Baulig  <martin@ximian.com>
10343
10344         * debug-debugger.h: New header file for debug-debugger.c.
10345
10346         * debug-debugger.c: Big API cleanup; don't run the managed Main()
10347         function is a separate thread anymore; add support for attaching.
10348
10349 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
10350
10351         * tramp-x86.c: Fix a warning.
10352
10353 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
10354
10355         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
10356         on very large methods.
10357
10358         * aot.c (load_patch_info): Fix a warning.
10359
10360 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
10361
10362         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
10363         mini-ops.h: alu membase optimizations.
10364
10365 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
10366
10367         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
10368         to speedup StringBuilder.
10369
10370 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
10371
10372         * dominators.c (mono_compute_natural_loops): Fix detection of
10373         loop body start blocks.
10374
10375         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
10376
10377 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
10378
10379         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
10380         #75145.
10381
10382 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
10383
10384         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10385
10386 2006-01-25  Martin Baulig  <martin@ximian.com>
10387
10388         * debug-debugger.c: Moved the `MonoDebuggerManager' and
10389         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
10390         started to cleanup this file a little bit.
10391
10392 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
10393
10394         * mini.c: optimize a codepath frequently happening in generics code.
10395
10396 2006-01-23  Martin Baulig  <martin@ximian.com>
10397
10398         * Makefile.am: Only compile debug-debugger.c on supported platforms.
10399
10400         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
10401         functions directly.
10402
10403         * driver.c: debug-debugger.c is only available if
10404         `MONO_DEBUGGER_SUPPORTED' is defined.   
10405
10406 2006-01-23  Martin Baulig  <martin@ximian.com>
10407
10408         * debug-debugger.c: Only enable this on platforms where the Mono
10409         Debugger is working (x86 and x86_64).
10410
10411 2006-01-21  Martin Baulig  <martin@ximian.com>
10412
10413         The Mono Debugger is now using the normal `mono' instead of the
10414         `mono-debugger-mini-wrapper' when executing managed code.
10415
10416         * debug-debugger.c: New file; previously known as
10417         debugger/wrapper/wrapper.c.
10418
10419         * debug-mini.c (mono_init_debugger): Removed.
10420
10421         * driver.c (mono_main): Added new `--inside-mdb' command line
10422         argument which is used when running inside the debugger.
10423
10424 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
10425
10426         * liveness.c (mono_analyze_liveness): Remove some unused data
10427         structures.
10428
10429 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
10430
10431         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
10432
10433 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
10434
10435         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
10436         depends on implementation details of monobitset.
10437
10438         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
10439         Fixes #77271.
10440
10441 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
10442
10443         * liveness.c: Update after monobitset changes.
10444
10445 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
10446
10447         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
10448
10449 2006-01-11 Neale Ferguson <neale@sinenomine.net>
10450
10451         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
10452
10453         * mini-s390x.c: Remove warning messages.
10454
10455 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
10456
10457         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
10458
10459 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
10460
10461         * generics.2.cs: Add ldelem/stelem_any test.
10462
10463 2006-01-10 Neale Ferguson <neale@sinenomine.net>
10464
10465         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
10466
10467 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
10468
10469         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
10470         
10471 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
10472
10473         * generics.2.cs: Reenable vtype tests.
10474
10475         * inssel-x86.brg: Remove an icorrect valuetype rule.
10476
10477 2006-01-06 Neale Ferguson <neale@sinenomine.net>
10478
10479         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
10480         initial support for OP_ABS.
10481
10482 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10483
10484         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
10485
10486 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10487
10488         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
10489         conversion and implement LADD/LSUB.
10490
10491         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
10492         architectures.
10493
10494 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10495
10496         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
10497
10498         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
10499         architectures.
10500
10501 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10502
10503         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
10504         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
10505         (stack walk problem).
10506
10507 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
10508
10509         * aot.c (mono_aot_load_method): Fix a warning.
10510
10511 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10512
10513         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
10514
10515 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10516
10517         * iltests.il: Add test for #77148.
10518
10519         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
10520         #77148.
10521
10522 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10523
10524         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
10525
10526 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10527
10528         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
10529         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
10530
10531         * basic-long.cs: Add lconv-to-r4/r8 tests.
10532
10533 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10534
10535         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
10536
10537         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
10538         here as on other archs.
10539
10540 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10541
10542         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
10543
10544 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10545
10546         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
10547         
10548         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
10549
10550         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
10551         instrument_prolog; Add memory_barrier instruction.
10552
10553 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
10554
10555         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
10556
10557 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
10558
10559         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
10560
10561         * aliasing.c inssel.brg: Fix warnings.
10562
10563         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
10564         could skip initialization of some parts of memory.
10565
10566         * mini.c mini-ia64.c: Fix warnings.
10567
10568         * inssel-sparc.brg: Add an implementation of lneg which actually works.
10569
10570 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
10571
10572         * aliasing.c (mono_build_aliasing_information): Add a workaround for
10573         a crash seen on sparc.
10574
10575         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
10576         
10577         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
10578
10579 2005-12-21 Neale Ferguson <neale@sinenomine.net>
10580
10581         * mini-ops.h: Add s390_backchain instruction
10582
10583         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
10584
10585         * cpu-s390.md: Add s390_backchain instruction
10586
10587         * mini-s390.c: Significant ABI changes
10588
10589         * mini-s390.h: Cater for zero length structures
10590
10591 2005-12-20 Neale Ferguson <neale@sinenomine.net>
10592
10593         * mini-s390.c: ABI fixes
10594
10595         * inssel-s390.brg: Remove debug statements
10596
10597         * cpu-s390.md: Fix length of ATOMIC_xx operations
10598
10599 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
10600
10601         * basic-float.cs: Add float<->long conversion tests.
10602
10603 2005-12-16 Neale Ferguson <neale@sinenomine.net>
10604
10605         * mini-s390.c: Fix LOCALLOC processing.
10606
10607         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
10608
10609 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
10610
10611         * iltests.il: Add tests for some opcodes not covered by the other
10612         tests.
10613
10614 2005-12-15 Neale Ferguson <neale@sinenomine.net>
10615
10616         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
10617         register loading for Tail processing; Correct trace output.
10618
10619         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
10620
10621         * cpu-s390.md: Correct size of jmp instruction. 
10622
10623 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10624
10625         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
10626
10627 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10628
10629         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
10630           Bring s390 up to current level.
10631
10632 2005-12-12  Zltan Varga  <vargaz@gmail.com>
10633
10634         * generics.2.cs: Disable the newly added tests as they do not work yet.
10635         
10636         * generics.2.cs: Add valuetype tests.
10637
10638 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
10639
10640         * basic-long.cs: Add i4->u8 test.
10641
10642         * objects.cs: Add tests for JIT intrinsic.
10643
10644         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
10645         optimizations lost by a mistake.
10646
10647 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
10648
10649         * basic-long.cs: Remove a test moved to objects.cs.
10650
10651         * arrays.cs: Add more array tests.
10652
10653 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
10654
10655         * arrays.cs: Add new tests for multi-dimensional arrays.
10656
10657 2005-12-06  Raja R Harinath  <rharinath@novell.com>
10658
10659         * Makefile.am (test_sources2): Add generics.2.cs.
10660         (EXTRA_DIST): Add test_sources2.
10661
10662 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
10663
10664         Support for boxing and unboxing nullable types as well as the
10665         isinst operation on nullables, per the CLI ammendment.
10666
10667         * inssel.brg (CEE_ISINST): Special case for nullable
10668
10669         * mini.c (handle_unbox_nullable): new method
10670         (handle_box): Special case for nullable types
10671         (mono_method_to_ir): Call handle_unbox_nullable in correct
10672         places.
10673
10674         * generics.2.cs: New test suite
10675
10676         * Makefile.am: Support for regression tests with generics.
10677
10678 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
10679
10680         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
10681         allocated to registers. Fixes #76800.
10682
10683 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
10684
10685         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
10686
10687 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
10688
10689         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
10690         of platforms.
10691
10692 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
10693
10694         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
10695         objects.cs.
10696
10697         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
10698         
10699         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
10700 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
10701
10702         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
10703         single precision before storing to a single precision location.
10704
10705 2005-11-28  Raja R Harinath  <rharinath@novell.com>
10706
10707         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
10708
10709 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
10710
10711         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
10712         correct files.
10713
10714         * basic.cs: Remove test_0_byte_compares test which was moved to
10715         objects.cs a long time ago.
10716
10717 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
10718
10719         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10720
10721 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
10722
10723         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
10724         handlers are called.
10725
10726         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
10727         throwing code.
10728
10729          * mini-ia64.c: Add support for the throw->branch exception 
10730         optimization.   
10731
10732         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
10733
10734 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10735
10736         * mini.c: Enabled "fastpath" deadce :-)
10737         
10738 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10739
10740         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
10741         alias analysis pass to support it.
10742         * mini.h: Likewise.
10743         * ssa.c: Likewise.
10744         * liveness.c: Likewise (liveness computation can use aliasing
10745         information to be more accurate).
10746         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
10747         moreover made so that "--compile-all" uses the given optimization
10748         flags and not the default ones.
10749         * aliasing.c: Alias analysis (new file).
10750         * aliasing.h: Likewise.
10751         * Makefile.am: added "aliasing.c" and "aliasing.h".
10752         
10753 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
10754
10755         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
10756         OP_L opcodes.
10757
10758 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
10759
10760         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
10761         fp >= end_of_stack exit condition, as it is not needed, and it might
10762         become true for fp eliminated frames.
10763
10764 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10765
10766         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
10767         coded offsets.
10768
10769 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
10770
10771         * mini-arm.c: fixed alignment of doubles/longs to match
10772         the C ABI (bug #76635).
10773
10774 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
10775
10776         * aot.c: fix compilation with --enable-minimal=aot.
10777
10778 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
10779
10780         * mini-arm.c: fixed compatibility with the new
10781         floating point emulator package for compares.
10782
10783 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
10784
10785         * mini.c : reverted sig->pinvoke changes (r51396-51397).
10786
10787 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
10788
10789         * mini-exceptions.c (print_stack_frame): Output to stderr.
10790         (mono_handle_native_sigsegv): Ditto.
10791
10792 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10793
10794         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
10795         OP_LCONV_TO_OVF_I implementation.
10796
10797         * mini-amd64.c: Add support for the throw->branch exception 
10798         optimization.
10799
10800         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
10801         when the catch clause catches a more general exception, i.e. Object.
10802
10803 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
10804
10805         * cpu-ia64.md: Remove unused opcodes.
10806
10807         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
10808         specific defines for architectures defining USE_SIGACTION.
10809
10810         * mini-ia64.c: Fix some warnings.
10811
10812         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
10813         version seemed to skip a frame.
10814
10815 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10816
10817         * mini.c: Clean up the usage of sig->pinvoke flag. Now
10818         only calls which are made to native code use this flag.
10819
10820 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10821
10822         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
10823         varargs methods as well.
10824         
10825         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
10826         which have save_lmf set. Reorganize methods prologs a bit.
10827
10828         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
10829         debugger to the proper place.
10830
10831 2005-10-29  Martin Baulig  <martin@ximian.com>
10832
10833         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
10834         when running inside the debugger until the debugger has support
10835         for it.
10836
10837 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10838
10839         * mini.h: Fix a warning.
10840
10841 2005-10-24  Miguel de Icaza  <miguel@novell.com>
10842
10843         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
10844         we expose publicly, this returns the string.
10845
10846 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
10847
10848         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
10849         with fp elimination.
10850
10851 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10852
10853         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
10854         native stacktrace using the glibc 'backtrace' function if available.
10855
10856 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
10857
10858         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
10859
10860         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
10861         handle SIGSEGVs received while in native code.
10862
10863         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
10864         code, call mono_handle_native_sigsegv which will abort the runtime
10865         after printing some diagnostics, instead of converting it into a
10866         confusing NullReferenceException.
10867
10868 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10869
10870         * cpu-pentium.md: Remove unused opcodes.
10871
10872 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
10873
10874         * mini-amd64.h (MonoLMF): Add rsp field.
10875
10876         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
10877         the lmf too.
10878
10879 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
10880
10881         * mini-codegen.c (get_register_spilling): Fix some warnings.
10882
10883 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
10884
10885         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
10886         elimination during exception handling. Enable fp elimination by
10887         default.
10888
10889         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
10890         elimination.
10891
10892 2005-10-16  Martin Baulig  <martin@ximian.com>
10893
10894         * mini-exceptions.c
10895         (mono_debugger_run_finally): New public method for the debugger.
10896
10897 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10898
10899         * debug-mini.c (mono_debug_init_method): Fix warning.
10900
10901         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
10902         the 'exname' parameter const to fix some warnings.
10903
10904 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
10905
10906         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
10907         introduced by the previous patch.
10908
10909 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
10910
10911         * basic-float.cs: Add test for precision of float arithmetic.
10912
10913         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
10914         when loading/storing single values from/to memory.
10915
10916         * mini.c (mono_jit_compile_method_with_opt): Create the function
10917         pointers in the correct domain.
10918
10919 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10920
10921         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
10922         introduced by previous patch.
10923         
10924         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
10925         when out_filter_idx is NULL.
10926
10927         * mini-exceptions.c: Don't run filter clauses twice during exception
10928         handling. Fixes #75755.
10929
10930 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10931
10932         * aot.c: Add support for ldflda wrappers.
10933
10934         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
10935         #75902.
10936
10937 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
10938
10939         * mini.c, mini.h: do not consider exception handlers blocks when
10940         setting up interface variables.
10941
10942 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
10943
10944         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
10945
10946 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
10947
10948         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
10949         causes a regression.
10950
10951         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
10952
10953 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
10954
10955         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
10956         of the OP_P definitions.
10957
10958         * TODO: Add a proposal for dealing with the CEE/OP mess.
10959
10960         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
10961         optimizations from the x86 port.
10962
10963         * cpu-amd64.md: Ditto.
10964
10965         * basic.cs basic-long.cs: Add tests.
10966
10967 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
10968
10969         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
10970         Patrik Torstensson's implementation of my exception-handling
10971         optimization idea, when the exception object is not used
10972         (bug #62150).
10973
10974 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
10975
10976         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
10977         of the mul_imm optimizations from the old jit.
10978
10979 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
10980
10981         * mini.c, liveness.c: patch by Patrik Torstensson and
10982         Zoltan Varga to improve performance in methods with
10983         exception clauses.
10984
10985 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10986
10987         * driver.c: Remove 'Globalization' entry from --version.
10988
10989 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
10990
10991         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
10992         there is a profiler interested in JIT events.
10993
10994         * aot.c: Load profile files produced by the AOT profiling module, and
10995         reorder methods based on the profiling info. Add a 'method_order' table
10996         to the AOT file to make mono_aot_find_jit_info work with the reordered
10997         methods.
10998
10999         * mini.h: Bump AOT file version info.
11000
11001 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
11002
11003         * mini-arm.h: work around what looks like a gcc bug when optimizations
11004         are enabled.
11005
11006 2005-09-28  Raja R Harinath  <rharinath@novell.com>
11007
11008         * Makefile.am (AM_CFLAGS): Don't use += to append inside
11009         conditionals.  Use ...
11010         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
11011
11012 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
11013
11014         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
11015         to determine the amount of memory to copy when passing valuetypes.
11016
11017         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
11018         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
11019
11020 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
11021
11022         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
11023         information about aot.
11024
11025 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
11026
11027         * *.c: Replace the use of {Enter,Leave}CriticalSection with
11028         macros. This will allow a deadlock debugger to easily be plugged
11029         in.
11030
11031 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
11032
11033         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
11034
11035 2005-09-27  Raja R Harinath  <rharinath@novell.com>
11036
11037         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
11038         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
11039         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
11040         ($(arch_built)) [CROSS_COMPILING]: Error out.
11041
11042 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
11043
11044         * aot.c: Add support for the no_special_static flag for classes.
11045
11046 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
11047
11048         * Reapply reverted patches.
11049
11050         * *: Revert r50174 as well.
11051
11052         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
11053
11054 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
11055
11056         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
11057
11058 2005-09-23  Miguel de Icaza  <miguel@novell.com>
11059
11060         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
11061         part of the SIG_HANDLER_SIGNATURE.  
11062
11063 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
11064
11065         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
11066         statistics.
11067
11068         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
11069         introduced by previous patch.
11070
11071 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
11072
11073         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
11074         saved registers too.
11075
11076         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
11077         upon the information returned by get_call_info ().
11078         
11079         * mini-x86.c (add_float): Fix stack size calculation.
11080         (mono_arch_call_opcode): Rewrite this so it works based up the
11081         information returned by get_call_info ().
11082         (mono_arch_get_this_vret_args): Ditto.
11083
11084 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
11085
11086         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
11087         in cinfo to determine the registers which need to be used.
11088
11089 2005-09-20  Miguel de Icaza  <miguel@novell.com>
11090
11091         * driver.c (mono_main): Add --server and --desktop flags. 
11092
11093 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
11094
11095         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
11096         registers as global registers.
11097
11098         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
11099         longer needed with the new register allocator.
11100
11101         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
11102
11103         * cpu-ia64.md: Remove unused opcodes.
11104         
11105         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
11106         
11107 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
11108
11109         * cpu-amd64.md: Remove unused opcodes.
11110
11111         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
11112         needed with the new register allocator.
11113
11114         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
11115         reg-reg moves.
11116
11117 2005-09-16  Raja R Harinath  <rharinath@novell.com>
11118
11119         * Makefile.am (check-local): Don't invoke semdel-wrapper.
11120
11121 2005-09-16  Martin Baulig  <martin@ximian.com>
11122
11123         * exceptions-amd64.c
11124         (throw_exception): Don't call mono_debugger_throw_exception() if
11125         we're a rethrow - see the FIXME in the code.
11126
11127 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
11128
11129         * mini.c (mono_init_exceptions): This only works on some architectures.
11130         
11131 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
11132
11133         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
11134         on ia64.
11135
11136         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
11137
11138         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
11139         now in mini-exceptions.c.
11140
11141 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
11142
11143         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
11144         now in mini-exceptions.c.
11145
11146 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
11147
11148         * exceptions-x86.c: Applied patch from Patrik Torstensson 
11149         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
11150
11151         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
11152         code into mini-exceptions.c. Add some assertions to it.
11153
11154 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
11155
11156         * aot.c (emit_section_change): Applied patch from "The Software Team" 
11157         (<software@solmersa.com>). Fix as errors on windows.
11158
11159 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
11160
11161         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
11162         method info into the LMF.
11163
11164 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11165         
11166         * mini-ia64.c: Add proper unwind info for method epilogs.
11167
11168         * exceptions-ia64.c: Add some code to help debugging.
11169         
11170         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
11171
11172         * mini-exceptions.c: Fix warning.
11173
11174 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
11175
11176         * mini.c: Really fix build.
11177
11178         * mini-x86.c mini-amd64.c: Fix build.
11179
11180 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11181
11182         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
11183
11184         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
11185         some Interlocked methods as intrinsics.
11186
11187         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
11188         for Thread methods as well.
11189
11190         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
11191
11192         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
11193
11194         * mini-ia64.c mini-x86.c mini-amd64.c 
11195         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
11196         OP_MEMORY_BARRIER.
11197         
11198         * mini.c (mono_init_exceptions): Fix build breakage.
11199
11200 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
11201
11202         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
11203         of instructions. Use the new ia64_unw_op macros for emitting unwind
11204         info.
11205
11206         * mini.c (mono_init_exceptions): Initialize exception handling
11207         related trampolines at startup.
11208
11209 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
11210
11211         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
11212
11213 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
11214
11215         * mini.c: Handle type loading errors gracefully during compilation and
11216         throw the appropriate exception.
11217
11218 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
11219
11220         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
11221         for the mono binary.
11222
11223 2005-09-09  Martin Baulig  <martin@ximian.com>
11224
11225         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
11226         the release.
11227
11228 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
11229
11230         * mini-arm.h: use emulation for conv.r.un for the release.
11231
11232 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
11233
11234         * mini-arm.c, objects.cs: more fixes and tests for them.
11235
11236 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
11237
11238         * mini-arm.c: align structures to at least 4 bytes to be able
11239         to keep our current optimized memcpy.
11240
11241 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
11242
11243         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
11244
11245 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11246
11247         * mini.c: ignore SIGPIPE.
11248
11249 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
11250
11251         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
11252
11253         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
11254
11255 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
11256
11257         * mini.h: Add prototype for mono_allocate_stack_slots_full.
11258
11259 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
11260
11261         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
11262         exception handling support.
11263         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
11264         patch by Brian Koropoff <briank@marakicorp.com>).
11265
11266 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
11267
11268         * mini.c: revert another 'optimization' which breaks when
11269         items on the eval stack need to be saved at a basic block end
11270         (bug #75940).
11271
11272 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
11273
11274         * jit-icalls.c: for arrays, ensure we always provide
11275         lower bounds.
11276
11277 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
11278
11279         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
11280         
11281         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
11282
11283 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
11284
11285         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
11286         arguments in their original register.
11287
11288 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
11289
11290         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
11291         memset/memcpy.
11292
11293         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
11294         when ssapre is enabled.
11295
11296         * inssel-long.brg: Fix bug in previous patch.
11297
11298         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
11299         multiplication by a constant.
11300
11301 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
11302
11303         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
11304         icc.
11305
11306         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
11307         saving registers.
11308
11309 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
11310
11311         * inssel-arm.brg: apply changes tested by Brian Koropoff
11312         <briank@marakicorp.com>.
11313
11314 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
11315
11316         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
11317         
11318 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
11319
11320         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
11321         to the same register if dreg is just a base register.
11322         (print_ins): Improve printing of membase opcodes.
11323
11324         * inssel-x86.brg: Add optimized ldind(reg) rules.
11325
11326         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
11327
11328 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
11329
11330         * mini.c: when running under valgrind, set the stack bottom for
11331         the GC at the actual approximate stack for the app (fixes running
11332         mono with valgrind).
11333
11334 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
11335
11336         * mini.c: do no break at the first valuetype to init found
11337         (fixes bug #75791).
11338
11339 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
11340
11341         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
11342
11343 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
11344
11345         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
11346
11347 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
11348
11349         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
11350
11351 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11352
11353         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
11354
11355         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
11356         code.
11357
11358         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
11359         code.
11360
11361         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
11362         methods.
11363
11364 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
11365
11366         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
11367
11368 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11369
11370         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
11371         in the tail recursion optimization.
11372
11373         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
11374         debug info into the assembly file.
11375
11376         * iltests.il: Add test for filter regions.
11377
11378         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
11379         initial stack of filter regions. Fixes #75755.
11380
11381 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
11382
11383         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
11384         stack requirements.
11385
11386 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11387
11388         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
11389         the check for an already compiled method on non-ia64 platforms.
11390         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
11391         proper domain.
11392
11393         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
11394
11395         * inssel-x86.brg: Add some optimized call rules.
11396
11397 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
11398
11399         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
11400         method here.
11401
11402         * mini.h mini-trampolines.c: Pass the trampoline argument to 
11403         mono_arch_patch_delegate_trampoline.
11404
11405         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
11406
11407         * mini-trampolines.c: Fix build.
11408
11409         * mini-amd64.h: Add delegate trampolines.
11410
11411         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
11412
11413         * inssel-amd64.brg: Add optimized call rules.
11414         
11415         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
11416
11417         * inssel-ia64.brg: Add optimized ldind(reg) rules.
11418
11419 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
11420
11421         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
11422         change.
11423
11424         * mini-ia64.c: Remove LMF fixmes.
11425
11426         * mini-ia64.h: Remove most fields from LMF.
11427
11428         * inssel-ia64.brg (stmt): Fix unaligned access errors.
11429
11430         * mini-trampolines.c: Add support for IA64 function descriptors.
11431
11432         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
11433         for IA64 function descriptors.
11434
11435 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
11436
11437         * tramp-arm.c: patch the vtable for virtual calls. Added
11438         support code to register/unregister the LMF.
11439         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
11440         more LMF work.
11441
11442 2005-08-19  Dick Porter  <dick@ximian.com>
11443
11444         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
11445         bit value if needed.
11446
11447 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
11448
11449         * mini.c (mini_get_method): Move handling of wrapper data here.
11450
11451         * mini.c (mono_method_to_ir): Add support for dynamic methods.
11452
11453         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
11454         virtual.
11455
11456         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
11457         bblock->code does not remain empty.
11458
11459 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
11460
11461         * arrays.cs: Add regression test for #75832.
11462
11463         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
11464         rules. Fixes #75832.
11465
11466         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
11467         instruction scheduling.
11468
11469 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
11470
11471         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
11472
11473 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
11474
11475         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
11476
11477         * mini-codegen.c: Fix VC build.
11478
11479         * cpu-pentium.md: Increase length of atomic_exhange_i4.
11480
11481 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11482
11483         * mini.h: fix signature for mono_register_opcode_emulation.
11484
11485 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
11486
11487         * mini.c: Get rid of most of the helper_sig_... constants using
11488         mono_create_icall_signature ().
11489
11490 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
11491
11492         * jit-icalls.c (helper_ldstr): New helper function.
11493
11494         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
11495
11496         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
11497         throw, load the string using a helper call instead of creating a string object.
11498
11499         * aot.c: Update after LDSTR changes.
11500
11501         * mini.h: Bump AOT file version.
11502         
11503         * aot.c: Save class size info into the AOT file. Print more statistics during
11504         compilation.
11505
11506         * mini.h: Bump AOT file version.
11507
11508         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11509         ordering of disasm cases. Fixes #74957.
11510
11511 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
11512
11513         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
11514         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
11515         the generic code needed for the ARM port.
11516
11517 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
11518
11519         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
11520         inssel-arm.brg: more ARM features and fixes.
11521
11522 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
11523
11524         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
11525         ARM port work in progress.
11526
11527 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
11528
11529         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
11530
11531         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
11532
11533         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
11534
11535         * inssel.brg (mini_emit_memset): Add support for unaligned access.
11536
11537         * *-ia64.*: Ongoing IA64 work.
11538         
11539         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
11540
11541 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11542
11543         * TODO: Remove out-of-data todo stuff.
11544
11545         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
11546         dead code.
11547
11548         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
11549
11550         * mini.h: Bump corlib version.
11551
11552 2005-07-27  Martin Baulig  <martin@ximian.com>
11553
11554         * mini-codegen.c
11555         (create_copy_ins): Added `const unsigned char *ip' argument; set
11556         `copy->cil_code' from it.
11557
11558 2005-07-27  Martin Baulig  <martin@ximian.com>
11559
11560         * mini-exceptions.c (mono_handle_exception): Don't call
11561         mono_debugger_handle_exception() for filters.
11562
11563 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
11564
11565         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
11566         as well.
11567
11568 2005-07-26  Martin Baulig  <martin@ximian.com>
11569
11570         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
11571
11572         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
11573         helper_compile_generic_method() if the method is actually virtual
11574         and non-final.
11575
11576 2005-07-26  Martin Baulig  <martin@ximian.com>
11577
11578         * mini.c
11579         (trampoline_code): Renamed to `mono_trampoline_code' and made it
11580         public; this is now accessed directly by the debugger.
11581         (mono_generic_trampoline_code): Removed.
11582
11583         * debug-mini.c
11584         (mono_debug_init_method): Also add interncalls and wrappers.
11585
11586 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
11587
11588         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
11589
11590 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
11591
11592         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
11593
11594 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
11595
11596         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
11597
11598 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11599
11600         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
11601         getting TLS offsets on AMD64 too.
11602
11603 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
11604
11605         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
11606
11607 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
11608
11609         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
11610         inssel-arm.brg, mini-arm.h: ARM port work in progress.
11611
11612 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11613
11614         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
11615
11616         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
11617         to mini.c.
11618
11619         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
11620         mono_sparc_is_virtual_call ().
11621         
11622         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
11623
11624         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
11625         trampoline parameters.
11626
11627         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
11628         
11629         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
11630         to mono_arch_get_vcall_slot_addr.
11631
11632         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
11633         trampoline code.
11634
11635         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
11636
11637 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11638
11639         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
11640
11641 2005-07-19  Martin Baulig  <martin@ximian.com>
11642
11643         * exceptions-amd64.c (throw_exception): Call
11644         mono_debugger_throw_exception() here like we're doing it on i386.
11645
11646 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11647
11648         * mini-ia64.c: Add optimized TLS access support.
11649
11650 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
11651
11652         * mini-exceptions.c: Ongoing IA64 work.
11653
11654         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
11655
11656         * mini.c: Use the default optimization set when embedding. Fixes
11657         #75194.
11658
11659 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
11660
11661         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
11662         of trampolines to a separate file.
11663
11664         * mini-trampolines.c: New file.
11665
11666         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
11667         separate file.
11668         
11669         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
11670         amd64/ia64 code.
11671
11672         * mini-codegen.c: Fix cygwin build.
11673
11674 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
11675
11676         * mini.c: Add some minor changes needed by the IA64 port.
11677
11678         * *-ia64.*: Ongoing IA64 work.
11679
11680 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
11681
11682         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
11683         trampolines into arch-independent and arch-dependent parts.
11684
11685         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
11686
11687 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
11688
11689         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
11690
11691         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
11692         the xp-regalloc-branch for amd64.
11693
11694         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
11695         xp-regalloc-branch for x86.
11696
11697 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11698
11699         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
11700
11701 2005-07-06  Martin Baulig  <martin@ximian.com>
11702
11703         * mini.c
11704         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
11705         (mono_jit_runtime_invoke): Likewise.
11706
11707 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11708
11709         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
11710         on x86 too.
11711         
11712         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
11713         without loading their metadata. Reorganize the file format so exception handling+
11714         debug info is kept separate from normal method info. Create MonoJitInfo 
11715         structures for methods lazily.
11716
11717         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
11718         loading metadata.
11719         (x86_class_init_trampoline): Patch AOT class init trampolines too.
11720
11721         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
11722
11723         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
11724         in AOT code.
11725
11726         * mini.h: Bump AOT file version.
11727
11728 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
11729
11730         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11731
11732 2005-07-01  Raja R Harinath  <rharinath@novell.com>
11733
11734         * Makefile.am (check-local): Call semdel-wrapper.
11735
11736 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
11737
11738         * mini-x86.c: Revert the last change as it seems to break the build..
11739
11740 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11741
11742         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11743         
11744         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
11745
11746 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
11747
11748         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
11749         outside of the macro, so strange stuff doesn't happen with gcc4
11750         (NEW_AOTCONST_TOKEN): Likewise.
11751
11752 2005-06-28  Martin Baulig  <martin@ximian.com>
11753
11754         * mini.c (mini_class_is_system_array): New static method; use this
11755         instead of `klass->parent == mono_defaults.array_class' everywhere
11756         since this also works for the new generic array class.
11757
11758 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11759
11760         * inssel.brg: Remove warnings.
11761
11762 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
11763
11764         * mini-ia64.c: Ongoing IA64 work.
11765
11766         * basic-float.cs: Add float->i1 conversion test.
11767
11768         * iltests.il: Add conv.u4 test.
11769
11770 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
11771
11772         * inssel-long.brg: Fix bug caused by last change.
11773
11774 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
11775
11776         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
11777         BSDs.  Allows the x86 JIT to work on OSX86
11778
11779 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
11780
11781         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
11782         u4->i8 conversion.
11783
11784         * mini-ia64.c: Ongoing IA64 work.
11785
11786 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11787
11788         * mini-ia64.c: Ongoing IA64 work.
11789
11790         * driver.c: Clean up jit_code_hash as well when using --regression.
11791
11792         * inssel-long.brg: Fix long->i4/u4 conversion rules.
11793
11794         * basic-long.cs: Add tests for long->u4 conversion.
11795
11796 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
11797
11798         * mini.c: Take mono_get_domainvar out of macros. This makes sure
11799         that we do not depend on undefined C behavior: the order stuff
11800         gets evaluated within an expression. Fixes mono when compiled on
11801         GCC 4.
11802
11803 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
11804
11805         * *-ia64.*: Ongoing IA64 work.
11806
11807         * aot.c: Lower memory usage while loading AOT methods.
11808
11809         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
11810
11811         * mini.h: Bump AOT file format version.
11812
11813 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11814
11815         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
11816
11817 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
11818
11819         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
11820         not on callee assembly). Fixed some comments.
11821
11822 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
11823
11824         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
11825         it gets proper disassembly.
11826         (emit_method_info): Remove some dead code.
11827
11828         * mini.c (mini_method_compile): Allways allocate the GOT var in
11829         mono_method_to_ir for emulating opcodes.
11830
11831 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
11832
11833         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
11834         before freeing the code memory. Fixes #74990.
11835
11836         * objects.cs: Add regression test for #74992.
11837
11838         * liveness.c: Extend live ranges of arguments to the beginning of the
11839         method. Fixes #74992.
11840
11841         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
11842         so it points into the faulting instruction.
11843
11844 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
11845
11846         * jit-icalls.c (mono_imul_ovf): Add exception handling.
11847
11848         * *-ia64.*: Ongoing IA64 work.
11849
11850         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
11851
11852 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
11853
11854         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
11855
11856         * *-ia64.*: Ongoing IA64 work.
11857
11858 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
11859
11860         * basic-long.cs: Add tests for add/sub.ovf.
11861
11862         * basic.cs: Add tests for sub.ovf.
11863
11864         * *-ia64.*: Ongoing IA64 work.
11865
11866 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
11867
11868         * *-ia64.*: Ongoing IA64 work.
11869
11870         * basic.cs: Add conv.ovf.i4.un test.
11871
11872 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
11873
11874         * mini.c: (remove_block_if_useless) Fixed bug 75061.
11875         
11876 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11877
11878         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
11879
11880 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
11881
11882         * *-ia64.*: Ongoing IA64 work.
11883
11884 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11885
11886         * trace.[ch]:
11887         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
11888
11889 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
11890
11891         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
11892
11893 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
11894
11895         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
11896
11897         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
11898         of a call is callable by a near call.
11899
11900 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
11901
11902         * mini-ia64.c: Ongoing IA64 work.
11903
11904 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
11905
11906         * genmdesc.c: Make the generated array non-static.
11907
11908         * inssel-long.brg: Fix LSHR_IMM rule.
11909
11910         * *-ia64.*: Ongoing IA64 work.
11911
11912         * *-ia64.*: Ongoing IA64 work.
11913
11914 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11915
11916         * *-ia64.*: Ongoing IA64 work.
11917
11918         * *-ia64.*: Ongoing IA64 work.
11919         
11920         * mini-ia64.c: Ongoing IA64 work.
11921
11922         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
11923
11924 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11925
11926         * objects.cs basic-calls.cs: Move some tests to objects.cs.
11927         
11928         * objects.cs basic-long.cs: Move some tests to objects.cs.
11929
11930 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
11931
11932         * *-ia64.*: Ongoing IA64 work.
11933
11934         * iltests.il: Add a new test.
11935
11936         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
11937         newobj. Fixes #75042.
11938
11939 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
11940
11941         * *-ia64.*: Ongoing IA64 work.
11942         
11943         * *-ia64.*: Ongoing IA64 work.
11944         
11945         * *-ia64.*: Ongoing IA64 work.
11946
11947         * basic.cs objects.cs: Move tests accessing static variables as well.
11948
11949         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
11950
11951 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
11952
11953         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
11954
11955         * driver.c: Always print failed tests.
11956
11957         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
11958         frame pointer.
11959
11960         * *ia64*: Ongoing IA64 work.
11961
11962 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
11963
11964         * basic.cs: Add tests for add.ovf. Fix warnings.
11965
11966 2005-05-18  Miguel de Icaza  <miguel@novell.com>
11967
11968         * driver.c (mono_main): Avoid crash if no argument is passed to
11969         --break;  Do not use g_error, but f_printf.   And fix all other
11970         ocurrences of the same crash.
11971
11972 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
11973
11974         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
11975         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
11976         Fixes #74742.
11977
11978 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
11979
11980         * *-ia64.*: Add beginnings of IA64 backend.
11981
11982         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
11983
11984 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
11985
11986         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
11987         Fixes #74925.
11988
11989         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
11990
11991         * mini-amd64.c: Fix a warning.
11992
11993 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
11994
11995         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
11996         in float_neg. Fixes #74897.
11997
11998         * mini-amd64.c (emit_call): Fix another near call bug.
11999
12000 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
12001
12002         * declsec.c: Keep the appdomain information in the structure. Added a 
12003         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
12004         value gets overwritten).
12005         * declsec.h: Set the default MonoArray for the the stack to 6. Added
12006         an MonoAppDomain member to MonoSecurityFrame.
12007         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
12008         used in the stack walk. Now use a MonoArray which grow (double) when
12009         it gets full.
12010
12011 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
12012
12013         * mini.c: Re-enabled runtime cleanup, since running threads should
12014         now properly stop when exiting.
12015
12016 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
12017
12018         * mini-codegen.c: New file contaning the arch-independent local
12019         register allocator. Not used by any architectures yet.
12020
12021         * mini.h linear-scan.c: Merge some changes from the 
12022         mini-xp-local-regalloc branch.
12023
12024 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
12025
12026         * mini-amd64.c (emit_call): Fix calls to native functions when the
12027         runtime is compiled as a shared library. Fixes #74756.
12028
12029         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
12030         on a literal field. Fixes #74751.
12031
12032 2005-04-25  Raja R Harinath  <rharinath@novell.com>
12033
12034         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
12035
12036 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
12037
12038         * objects.cs: Add missing null casting test.
12039
12040 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
12041
12042         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
12043         in wrapper methods. Also rename 'address' variable to 'offset'.
12044
12045 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
12046
12047         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
12048         warnings.
12049         
12050         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
12051
12052         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
12053         work on windows.
12054
12055 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
12056
12057         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
12058
12059 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
12060
12061         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
12062         just the last bytes.
12063
12064 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
12065
12066         * aot.c (mono_compile_assembly): Fix warning.
12067
12068         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
12069         by the _MSC_VER stuff.
12070
12071 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
12072
12073         * inssel-long.brg: Fix #74588.
12074
12075         * cpu-amd64.md: Fix #74591.
12076
12077         * iltests.il: Add new regression tests.
12078
12079 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
12080
12081         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
12082         valuetype.
12083
12084 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
12085
12086         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
12087
12088         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
12089         from Bill Middleton <flashdict@gmail.com>.
12090
12091 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
12092
12093         * arrays.cs: Add new regression test. Fix warnings.
12094
12095 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
12096
12097         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
12098         and leakage in CKFINITE.
12099
12100         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
12101         this to a null op since it is called on amd64 too.
12102
12103         * exceptions-amd64.c (get_throw_trampoline): Align stack.
12104
12105         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
12106         body since this is not used on amd64.
12107         
12108         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
12109
12110         * mini-amd64.c: Remove obsolete fixmes.
12111
12112         * mini.c (print_method_from_ip): Fix debugging support.
12113
12114 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12115
12116         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
12117         so that expressions that don't give much gain are not reduced.
12118         * ssapre.h: Likewise.
12119
12120 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
12121
12122         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
12123
12124         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
12125
12126         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
12127
12128 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
12129
12130         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
12131
12132         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
12133
12134 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
12135
12136         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
12137         stack touching.
12138
12139         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
12140
12141         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
12142
12143         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
12144
12145         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
12146         MONO_ARCH_USE_SIGACTION. Fixes #74252.
12147
12148         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
12149
12150         * mini-x86.c: Fix up stack overflow handling.   
12151
12152         * exceptions.cs: Add new regression test.
12153
12154 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
12155
12156         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
12157         mono_jit_thread_attach.
12158
12159         * mini.c (mono_method_to_ir): Verify called method is not abstract.
12160
12161 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12162
12163         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
12164         avoid calling constructors using callvirt.
12165
12166         * inssel.brg: Fix #74073.
12167
12168 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
12169
12170         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
12171         compilation with non-GCC compilers.
12172         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
12173         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
12174
12175 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
12176
12177         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
12178         klass->interface_offsets (will likely fix bug#74073).
12179
12180 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12181
12182         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
12183
12184 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
12185
12186         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
12187         to amd64_div_reg_size ().
12188         
12189         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
12190
12191 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
12192
12193         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
12194
12195 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12196
12197         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
12198
12199 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12200
12201         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
12202         
12203         * mini.c (mono_precompile_assembly): Load and precompile referenced
12204         assemblies as well. Fixes #74015.
12205
12206 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12207
12208         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
12209
12210 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
12211
12212         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
12213         a lot of checks and (anyway) permissions cannot work until corlib is 
12214         loaded.
12215
12216 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
12217
12218         * mini-ppc.c: fixed ABI issue on sysv/ppc.
12219
12220 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
12221
12222         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
12223         calls (fixes bug#72824).
12224
12225 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12226
12227         * mini.c: fix tail recursion elimination (see test in bug#73936).
12228
12229 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
12230
12231         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
12232         some fp functions in sse2 mode.
12233
12234 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
12235
12236         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
12237
12238 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
12239
12240         * mini.h mini.c: Add mono_get_jit_tls_key ().
12241
12242         * mini-x86.c: Enable fast TLS support on windows.
12243
12244 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
12245
12246         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
12247         * mini.c: Check for p/invoke method when generating code. If a
12248         p/invoke method, or it's class, isn't decorated with [Suppress
12249         UnmanagedCodeSecurity] then generate code to call System.Security.
12250         UnmanagedDemand (only if the security manager is active).
12251
12252 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12253
12254         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
12255         last change as it seems to cause strange crashes.
12256         
12257 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12258
12259         * *.c: handle unsafe function pointers where needed.
12260
12261 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12262
12263         * mini.c (mono_jit_free_method): Remove the fixme too.
12264
12265 2005-03-15  Miguel de Icaza  <miguel@novell.com>
12266
12267         * mini.c: As discussed, make the code actually free the delegate
12268         thunk now, to enable the debugging of delegate problems, use
12269         MONO_DEBUG=1 when running Mono. 
12270
12271         This takes also care of parts of the leaks as seen by Joe.
12272
12273 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
12274
12275         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
12276         thread_tls_offset calculation.
12277
12278 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
12279
12280         * declsec.c: Reworked linkdemand checks for icall. The previous code
12281         was using the declaration code (untrusted) and didn't work as expected
12282         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
12283         specific case.
12284
12285 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
12286
12287         * iltests.il: Add new localloc test.
12288
12289         * mini-amd64.c: Handle large stack allocations the same way as on
12290         windows if stack overflow handling is working.
12291         
12292         * mini-amd64.c: Allocate the signal stack using mmap.
12293
12294         * mini.c (sigsegv_signal_handler): Fix reading of context.
12295
12296         * mini-exceptions.c: Fix up stack overflow handling.
12297
12298         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
12299
12300         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
12301
12302         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
12303
12304         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
12305
12306         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
12307         tramp_init functions as they are no longer needed.
12308
12309 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
12310
12311         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
12312         
12313         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
12314
12315         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
12316         
12317         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
12318         support that now.
12319
12320         * mini-ops.h: Add OP_LMUL_IMM.
12321
12322         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
12323         long mul/div opcodes as intrinsic.
12324
12325         * mini-amd64.c (emit_call): Handle the case when the callee might be
12326         an AOT method.
12327
12328 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
12329
12330         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
12331         extra safe.
12332         
12333         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
12334
12335         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
12336
12337 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
12338
12339         * mini.c (mono_codegen): Don't leak here, to help people running
12340         monogrind.
12341
12342 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
12343
12344         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
12345         conversions in sse2 mode.
12346
12347         * basic-float.cs: Add regression test.
12348         
12349         * mini-amd64.c: Reenable sse2.
12350
12351 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12352
12353         * mini-amd64.c: Disable sse2 until some regressions are fixed.
12354
12355 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
12356
12357         * driver.c: Copyright text should include 2005.
12358         
12359 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12360
12361         * cpu-amd64.md (load_membase): Fix more max lengths.
12362
12363 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
12364
12365         * cpu-amd64.md (load_membase): Fix max length.
12366
12367         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
12368
12369         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
12370
12371         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
12372         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
12373
12374         * basic-float.cs: Add rounding regression test.
12375
12376         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
12377
12378 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
12379
12380         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
12381         structures in registers for pinvoke wrappers.
12382
12383 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
12384
12385         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
12386
12387 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
12388
12389         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
12390         wrapper to mono_jit_thread_attach.
12391
12392         * mini.c (mini_jit_thread_attach): New jit icall.
12393
12394         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
12395         native->managed wrappers.
12396
12397         * exceptions.cs: Add new regression test.
12398
12399         * mini.c (optimize_branches): Check regions in the cbranch to throw
12400         block case as well. Fixes #73242.
12401
12402 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12403
12404         * mini.c: thread safety fixes.
12405
12406 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
12407
12408         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
12409         patching stuff, since delegates use jump trampolines so there is
12410         no caller.
12411
12412         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
12413         jump trampolines.
12414         
12415         * tramp-amd64.c: Fix build.
12416
12417         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
12418         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
12419
12420         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
12421         Rename this to mono_arch....
12422         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
12423
12424         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
12425
12426         * mini-amd64.c (emit_call): If both the caller and the callee is
12427         guaranteed to have 32 bit addresses, emit a normal call.
12428
12429         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
12430
12431         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
12432         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
12433         method_ptr inside delegates.
12434
12435 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
12436
12437         * mini.c (mono_jit_free_method): Free the method info even if the native code is
12438         invalidated. Fixes #73001.
12439
12440         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
12441
12442         * mini-x86.c: Only use stdcall for pinvokes on windows.
12443
12444 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
12445
12446         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
12447         * mini-x86.c: remove unreliable __thread var offset detection,
12448         use the correct accessors and enable by default.
12449
12450 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12451
12452         * mini.c (mono_jit_free_method): Fix memory leak.
12453
12454 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
12455
12456         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
12457
12458 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
12459
12460         * cpu-amd64.md: Fix lengths of atomic opcodes.
12461
12462 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
12463
12464         * driver.c: try to not imply using ICU is any good.
12465
12466 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
12467
12468         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
12469         functions as inline ops.
12470
12471         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
12472         some Interlocked functions as inline ops.
12473
12474         * mini.c (move_basic_block_to_end): Fix bug in last patch.
12475
12476         * mini.h (MonoBasicBlock): Reorganize fields a bit.
12477
12478         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
12479
12480         * mini.c: Add support for OP_NOT_TAKEN.
12481
12482         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
12483         structures in registers for pinvoke wrappers.
12484
12485         * mini-amd64.c: Fix warnings.
12486
12487 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
12488
12489         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
12490
12491         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
12492
12493         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
12494         address instead of loading the address from it.
12495
12496         * mini-x86.c: Add support for returning small structs in registers
12497         on Win32. Fixes part of #70864.
12498         
12499 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
12500
12501         * trace.c (get_token): Improve error checking.
12502
12503 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12504
12505         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
12506
12507 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
12508  
12509         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
12510         it can be reused for MonoClass.
12511         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
12512         _LINKDEMAND.
12513
12514 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
12515
12516         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
12517         instead of a MonoReflectionMethod. The method information wasn't used
12518         when displaying SecurityException details (but will be now).
12519
12520 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
12521
12522         * Makefile.am : windows build fix.
12523
12524 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12525
12526         * iltests.il: Add new regression test.
12527
12528         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
12529         #72522.
12530
12531 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
12532  
12533         * mini.c: Moved linkdemand check into helper function check_linkdemand
12534         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
12535         LDFTN, LDVIRTFTN).
12536
12537 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
12538
12539         * declsec.c: Added statistics counter for different kinds of 
12540         LinkDemands.
12541         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
12542         (and commented) declaration.
12543         * mini.c: Added statistics counter for security Demand code 
12544         generation. Added display of security statistics.
12545
12546 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
12547
12548         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
12549         Fix compilation errors under gcc-2.95.
12550
12551 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
12552
12553         * mini.c, driver.c: Use the new jit trampoline hashtable
12554
12555 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12556
12557         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
12558
12559 2005-02-11  Martin Baulig  <martin@ximian.com>
12560
12561         * debug-mini.c (mono_debug_close_method): Free the line number array.
12562
12563 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12564
12565         * aot.c: Break up large methods into smaller ones. Share GOT slots for
12566         icalls.
12567
12568         * mini.h: Bump AOT file format version. 
12569
12570 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
12571
12572         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
12573         APTC and P/Invoke.
12574         * declsec.h: Added macros to get/set lazyly initialized security 
12575         informations about assemblies. Added new enum for different type of
12576         possible LinkDemand violation. Added function to check LinkDemands.
12577         * mini.h: Added a field to MonoCompile to hold any security violation
12578         detected when JITting a method (so it can be thrown later).
12579         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
12580         and CEE_CALLVIRT. Added code to throw exception at the end of
12581         mini_method_compile (note: the exception is unhandled right now).
12582
12583 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
12584
12585         * mini.c, jit-icalls.c: use the managed implementation of
12586         memset for initobj and memset, to avoid managed <-> unmanaged
12587         transitions.
12588
12589 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12590
12591         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
12592         optimization if it would need a GOT var.
12593
12594         * basic.cs: Add tests for constant propagation and switch statements.
12595
12596         * ssa.c: Fix out-of-range constant propagation and switch statements.
12597
12598 2005-02-09    <vargaz@freemail.hu>
12599
12600         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
12601
12602 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
12603
12604         * cpu-amd64.md (load_membase): Fix max length of load_membase.
12605
12606 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12607
12608         * mini.c: update to new signature of mono_class_get_allocation_ftn().
12609
12610 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
12611
12612         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
12613         arithmetic operations.
12614
12615 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
12616
12617         * mini-ppc.c: add a workaround for broken user code that
12618         DllImports vararg functions with non-vararg signatures.
12619
12620 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12621
12622         * mini.c (mono_jit_compile_method_inner): Add detection and a 
12623         meaningfull error message for assemblies written in Managed C++.
12624
12625         * tramp-amd64.c mini-amd64.h: Add support for 
12626         create_trampoline_from_token ().
12627
12628         * aot.c mini-x86.c abcremoval.c: Applied patch from
12629         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
12630
12631 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
12632
12633         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
12634         which takes a MonoImage/token as parameter instead of a MonoMethod.
12635
12636         * aot.c: Use the new trampoline for initializing vtables.
12637
12638         * aot.c: Add support for ldfld/stfld_remote wrappers.
12639
12640         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
12641         rules for compare <MEM>, IMM.
12642
12643         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
12644
12645         * aot.c: Handle inherited finalizers correctly.
12646
12647 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
12648
12649         * inssel.brg (stmt): Add a missing _setup_... ().
12650
12651         * aot.c: Save some parts of the class state to the AOT file and use it
12652         to recompute that state when a class is initialized.
12653
12654         * mini.c: Install AOT hooks into the runtime.
12655
12656         * mini.h: Bump AOT file format version.
12657         
12658         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
12659         Fixes #72148.
12660
12661         * iltests.il: Add new test.
12662
12663 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12664
12665         * mini.c: fix typo.
12666
12667 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
12668
12669         * mini.c: setup the statistical profiler in the thread attach
12670         callback to cope with the new single thread code.
12671
12672 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
12673
12674         * mini-ppc.c: ensure we have enough room for the profiler
12675         calls (fixed bug#72084).
12676
12677 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
12678
12679         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
12680         it.
12681
12682 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12683
12684         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
12685
12686 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12687
12688         * ssapre.c: Fixed an issue with down safety (this allows IronPython
12689         to succesfully execute parrotbench).
12690         * ssapre.h: Likewise.
12691
12692 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12693
12694         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
12695         variable for stores to method arguments (fixes a SSAPRE issue).
12696
12697 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12698
12699         * mini.c: handle value types in dup, fixes gen-112.cs.
12700
12701 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
12702
12703         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
12704         sequence for calls in dynamic methods to avoid thunks.
12705
12706 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12707
12708         * mini.c: correctly remove dynamic methods from the hashtable.
12709
12710 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12711
12712         * driver.c: Disabled SSAPRE until fix the bug that appears
12713         in IronPython's parrotbench.
12714
12715 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
12716
12717         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
12718
12719         * mini.c (mono_method_to_ir): Revert the previous change.
12720         
12721         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
12722         when AOT compiling.
12723
12724         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
12725         mono_jit_info_table_find () etc. when running under valgrind.
12726
12727         * inssel.brg: Fix warnings.
12728
12729         * mini-exceptions.c: Fix warnings.
12730
12731 2005-01-31  Martin Baulig  <martin@ximian.com>
12732
12733         * driver.c (compile_all_methods_thread_main): Don't try to compile
12734         generic methods or anything which has type parameters.
12735
12736 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
12737
12738         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
12739
12740         * TestDriver.cs: Add --verbose flags.
12741
12742         * graph.c ssa.c: Fix 64 bit warnings.
12743         
12744         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
12745         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
12746         Fix 64 bit warnings.
12747
12748         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
12749         variable not spotted by gcc.
12750         
12751         * mini-amd64.c inssel-amd64.brg: Applied patch from  
12752         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
12753         X86_COMPARE_MEMBASE opcodes.
12754
12755         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
12756
12757 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
12758
12759         * *: MonoMethod->signature might be NULL now. You *MUST* use
12760         mono_method_signature.
12761
12762 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12763
12764         * driver.c (compile_all_methods_thread_main): Compile the methods
12765         without invoking cctors.
12766
12767 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12768
12769         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
12770         * basic-calls.cs: test for the above.
12771
12772 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12773
12774         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
12775         MonoJitInfo changes.
12776
12777 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
12778
12779         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
12780         eagerly if it contains dynamic methods.
12781         
12782         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
12783
12784         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
12785         trace, it is now computed by an icall from trace_ips.
12786         
12787         * mini-exceptions.c: Fix a warning.
12788
12789 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
12790
12791         * mini-exceptions.c: don't bother getting stack trace info if
12792         it's not going to be used.
12793
12794 2005-01-27  Raja R Harinath  <rharinath@novell.com>
12795
12796         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
12797         ssapre-mini-ops.h.
12798
12799 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
12800
12801         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
12802
12803         * aot.c: Avoid calling mono_method_get_header () if not needed.
12804
12805         * mini.h: Bump AOT file format version.
12806         
12807         * mini.c (mono_emit_native_call): Allocate a GOT var here.
12808
12809         * mini.c (mono_print_tree): Print more info for calls.
12810
12811 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
12812
12813         * declsec.h: Remove warning by adding missing include for marshal.h
12814
12815 2005-01-26  Martin Baulig  <martin@ximian.com>
12816
12817         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
12818         `ip' twice.
12819
12820 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
12821
12822         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
12823         flags.
12824
12825         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
12826
12827         * aot.c (mono_compile_assembly): Fix a warning.
12828
12829 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
12830
12831         * declsec.c: Look for security attributes on the original MonoMethod 
12832         (and not the wrapped one). This fix permissions on icalls.
12833
12834 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12835
12836         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12837
12838         * mini.c (mono_allocate_stack_slots): Add a fixme.
12839
12840         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12841
12842 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12843
12844         * inssel.brg: optimize casts of sealed types (more
12845         optimizations waiting for fixes in remoting).
12846
12847 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12848
12849         * inssel.brg (stmt): Add another dummy rule.
12850
12851         * driver.c: Fix warnings.
12852
12853         * driver.c (mono_main): If running under valgrind, instruct glib to use
12854         the system allocation functions so valgrind can track the memory
12855         allocated by the g_... functions.
12856
12857         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
12858
12859         * mini-ops.h: Add OP_DUMMY_STORE opcode.
12860
12861         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
12862
12863         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
12864         variables in try regions.
12865
12866         * mini.c (mini_method_compile): Don't disable optimizations on large
12867         methods when AOT compiling.
12868
12869         * mini.c (mono_allocate_stack_slots): New arch independent method to 
12870         allocate stack slots. Not yet used.
12871
12872 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
12873
12874         * debug-mini.c (mono_debug_close_method): Plug some leaks.
12875
12876 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
12877
12878         * mini-ppc.c: make the branch info relative as the code
12879         buffer can be reallocated.
12880
12881 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
12882
12883         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
12884         * driver.c: Removed the AOT/security restriction. Now initialize the
12885         security manager (in metadata) if --security is used.
12886         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
12887         rather than the pointer to declarative security, when AOT is used.
12888
12889 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
12890
12891         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
12892         basic blocks, reduced intrinsic exception throwing code size.
12893
12894 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
12895
12896         * driver.c (mini_usage): Reorder the usage screen.
12897
12898 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
12899
12900         * mini.c (mono_resolve_patch_target): Fix warning.
12901
12902 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
12903
12904         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
12905         previous patch.
12906
12907         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12908
12909         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
12910         breaks the amd64 build.
12911
12912         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
12913         register allocation. Fixes #71454.
12914
12915         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12916
12917         * arrays.cs: Add new regression test.   
12918
12919 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12920
12921         * ssapre.c: Turned usage of snprintf to GString.
12922         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
12923         (I left it on by mistake in my previous commit).
12924
12925 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
12926
12927         * mini.c, cfold.c, basic-calls.cs: preserve side effects
12928         on cond branch optimization (fixes bug# 71515).
12929
12930 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12931
12932         * abcremoval.c: Fixed bug 71062.
12933         * abcremoval.h: Likewise.
12934
12935 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12936
12937         * mini.c: Added a new functionality to optimize_branches, the removal
12938         of useless basic blocks, and fixed some problem in the removal of
12939         critical edges; some utility functions added for both purposes.
12940         * ssapre.c: Added complex expression support, and fixed bug 70637.
12941         * ssapre.h: Likewise.
12942         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
12943         enabled in SSAPRE.
12944         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
12945         * driver.c: Re-enabled SSAPRE.
12946
12947 2005-01-19  Martin Baulig  <martin@ximian.com>
12948
12949         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
12950         the result of mono_get_method_constrained().
12951
12952 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
12953
12954         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
12955         manager.
12956
12957 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
12958
12959         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
12960         be detected.  Fixes #59296.
12961
12962 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12963
12964         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
12965         which can happen. Fixes #71361.
12966
12967 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12968
12969         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
12970         manager.
12971
12972 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12973
12974         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
12975         appdomain-unload.exe to fail.
12976         
12977         * mini.c: Fix some memory leaks.
12978
12979 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
12980
12981         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
12982         Fixed bug and sped up some codepaths.
12983
12984 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12985
12986         * mini.c: Fix some memory leaks.
12987
12988         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
12989         conversion.
12990
12991         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
12992
12993         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
12994         #71320.
12995
12996         * iltests.il: Add regression test for #71320.
12997
12998 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
12999
13000         * mini.c (mono_codegen): Fix installation of profiler hooks.
13001
13002         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
13003
13004 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
13005
13006         * mini.h, mini.c, cfold.c: optimize access to enum
13007         readonly fields, too. Eval conditional branches if possible
13008         to perform unreachable code removal in more cases.
13009
13010 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
13011
13012         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
13013
13014         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
13015         code manager.
13016
13017         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
13018         WinXP DEP. Fixes #71244.
13019
13020 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
13021
13022         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
13023
13024 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
13025
13026         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
13027
13028 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
13029
13030         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
13031         changes.
13032
13033         * mini.h: Bump AOT version.
13034
13035         * mini.h (MonoCompile): Change exvar to a hash table.
13036
13037         * mini.c: Allocate a separate exvar for each handler block.
13038
13039         * mini.c: Get rid of the computation of filter_lengths, its not needed.
13040
13041         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
13042         ex var with the pending exception and only throw if the two are equal.
13043         Fixes #68552.
13044         
13045         * exceptions.cs: Add tests for rethrow and nested catch clauses.
13046
13047         * mini-x86.c: Fix warnings.
13048
13049         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
13050         used by all the ports now.
13051
13052         * aot.c: Add write-symbols and save-temps options.
13053
13054 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
13055
13056         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
13057
13058 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
13059
13060         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
13061         operations.
13062
13063         * tramp-s390.c: Check vtable slot belongs to the domain.
13064
13065         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
13066         as per other platforms.
13067
13068         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
13069
13070 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
13071
13072         * driver.c: we don't run the Main() code in a subthread anymore.
13073
13074 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
13075
13076         * mini.c: added experimental rtc support in the statistical
13077         profiler: if the user has the permission, more accurate statistics
13078         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
13079         The MONO_RTC value must be restricted to what the linux rtc allows:
13080         power of two from 64 to 8192 Hz.
13081
13082 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
13083
13084         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
13085
13086 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
13087
13088         * mini-ppc.c: better icache flush for smp.
13089
13090 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
13091
13092         * mini-amd64.c (emit_move_return_value): Fix memory leak.
13093
13094         * mini-x86.c (get_call_info): Add the get_call_info () code from the
13095         amd64 port, not yet used.
13096
13097 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13098
13099         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
13100         a struct type.
13101
13102 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
13103
13104         * driver.c: Added --security option to activate the security manager.
13105         Right now this will allow code generation for declarative demands and
13106         is disabled when AOT is specified.
13107         * mini.c: Add code generation for declarative security demands.
13108         * mini.h: Add mono_use_security_manager as an extern gboolean.
13109
13110 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13111
13112         * aot.c (mono_compile_assembly): Speed up compilation a bit by
13113         emitting more dense assembly code.
13114
13115         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
13116         exception throwing stuff.
13117
13118 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
13119
13120         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
13121         dead code.
13122
13123         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
13124         left in by mistake.
13125
13126         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
13127         fixed.
13128
13129         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
13130
13131         * tramp-*.c: Only patch vtable slots if the object is in the current
13132         domain. Fixes appdomain-unload.exe.
13133
13134         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
13135         
13136         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
13137         x86 branch.
13138
13139 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13140
13141         * mini.c (reverse_branch_op): New helper function.
13142
13143         * mini.c (optimize_branches): Run the new optimization only on 
13144         platforms which support it. Also reverse all kinds of branches.
13145
13146         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
13147
13148         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
13149         a throw statement.
13150
13151         * mini.c (optimize_branches): Reverse not-equals branches if the false
13152         bblock is a throw. This happens a lot of time with argument checking in
13153         corlib.
13154
13155         * mini.c (mono_codegen): Add support for placing basic blocks after
13156         the function epilogue.
13157
13158         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
13159         function epilogue.
13160         
13161 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
13162
13163         * mini.c (setup_stat_profiler): Only set this up if the platform
13164         supports ITIMER_PROF.
13165
13166 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13167
13168         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
13169         previous patch.
13170
13171         * inssel.brg: Fix a warning.
13172
13173 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
13174
13175         * mini.c: added support for statistical profiler 
13176         (run with: --profile=default:stat).
13177
13178 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
13179
13180         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
13181
13182         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
13183
13184         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
13185         related to global registers from the amd64 port.
13186
13187 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
13188
13189         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
13190
13191         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
13192         with global registers.
13193         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
13194
13195         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
13196
13197 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
13198
13199         * debug-mini.c (encode_value): Fix off-by-one.
13200
13201         * aot.c (encode_value): Likewise.
13202
13203         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
13204
13205 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
13206
13207         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
13208         AOT.
13209
13210         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
13211         
13212         * aot.c (emit_method_info): Increase size of temp buffer.
13213
13214         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
13215         the AOT case.
13216
13217 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
13218
13219         * aot.c (emit_method_info): Fix build.
13220         
13221         * aot.c: Further rework of the AOT file format to reduce the size of
13222         the method info data.
13223
13224         * mini.h: Bump AOT file format version.
13225
13226 2004-12-27  Martin Baulig  <martin@ximian.com>
13227
13228         * mini.c (mini_get_method): New static method; call
13229         mono_get_method_full() and mono_get_inflated_method().
13230         (mono_method_to_ir): Use mini_get_method() instead of
13231         mono_get_method_full(). 
13232
13233 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
13234
13235         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
13236
13237 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
13238
13239         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
13240
13241         * inssel-amd64.brg: Add some optimization rules.
13242
13243 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
13244
13245         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
13246         standard not GC'd stuff is fine.
13247
13248 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
13249
13250         * aot.c: Rework the AOT file format to get rid of most of the global
13251         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
13252
13253         * mini.h: Bump AOT file format version.
13254         
13255 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
13256
13257         * mini.h: Bump AOT file format version.
13258
13259         * aot.c (mono_aot_is_got_entry): New function to determine if an 
13260         address is inside a GOT.
13261
13262         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
13263
13264         * cpu-pentium.md: Increase the maximum size of some instructions which
13265         might involve a got access.
13266         
13267         * mini.c (get_method_from_ip): Another debug helper function.
13268
13269         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
13270         when got var accesses are created during the decompose phase.
13271
13272         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
13273
13274         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
13275         argument mini_compile_method and to MonoCompile, and use this to
13276         determine whenever a given method is compiled for AOT. This allows the
13277         other methods compiled during AOT compilation to be free of AOT stuff,
13278         so the backends does not need to add special support for them by
13279         creating a fake GOT etc.
13280
13281         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
13282         longer needed.
13283
13284 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
13285
13286         * mini.c (mono_method_to_ir): It turns out that some of the
13287         x-appdomain wrappers are lax with types, so just ignore this for
13288         all wrappers.
13289
13290         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
13291         at the vtable->klass. If it is non-shared code we can just use the
13292         vtable.
13293
13294 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
13295
13296         * mini-ppc.c: access MonoDomain from tls, too.
13297
13298 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
13299
13300         * declsec.c: Removed unused variable (and related warning ;-)
13301
13302 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
13303
13304         * iltests.il: New test for LDELEMA on an array of ref types.
13305
13306         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
13307         all ldelema's on reftypes.
13308         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
13309         it was the wrong place to put it.
13310
13311         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
13312         register to pop to make this cleaner, at the request of Paolo.
13313
13314 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13315
13316         * mini-ops.h (OP_GETHASHCODE): New op.
13317
13318         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
13319
13320         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
13321         operation.
13322
13323         For a microbenchmark, this reduces the cost of Hashtable.get_Item
13324         by 25%.
13325         
13326         * mini-x86.c (mono_arch_output_basic_block): Rather than
13327
13328         add ebp, 4
13329
13330         Emit
13331
13332         pop edx
13333
13334         The first is 3 bytes while the second is 1. This saves 36 kb on
13335         mscorlib, quite a big saving. When bootstraping mcs, I was able to
13336         see a small boost because of icache locality.
13337
13338         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
13339
13340 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
13341
13342         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
13343         started code sharing with the generic code.
13344
13345 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
13346
13347         * mini-ppc.c, cpu-g4.md: added code for direct access to
13348         tls data slots.
13349
13350 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
13351
13352         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
13353          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
13354         to OP_TLS_GET.
13355
13356 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
13357
13358         * declsec.c|h: Added functions to cache the declarative stack modifiers
13359         in MonoJitInfo and to create a security frame from a MonoJitInfo 
13360         structure.
13361         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
13362         created. Register internal calls for System.Security.SecurityFrame::
13363         _GetSecurityFrame and _GetSecurityStack.
13364         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
13365         the definitions for the new stack walk/callback mechanism.
13366         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
13367         first security frame for LinkDemands and InheritanceDemands) and
13368         GetSecurityStack for Demands. Both use the new mono_walk_stack code
13369         from lupus.
13370         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
13371         walk initialization (lupus).
13372
13373 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13374
13375         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
13376         idiom.
13377         (handle_loaded_temps): Do not create a temporary variable for
13378         things that we know are temps. They will never be modified.
13379         (mono_spill_call): Set MONO_INST_IS_TEMP
13380         (mono_emulate_opcode): ditto
13381         (emit_tree): ditto
13382         (mono_method_to_ir.CEE_DUP): ditto
13383
13384 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
13385
13386         * mini.c (type_to_eval_stack_type): Make this handle the void type
13387         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
13388         (emit_tree): use ip_in_bb to special case some common idioms
13389         Update all callers to pass in the IP.
13390         (mono_method_to_ir): Make CEE_CALL* do the above as well.
13391
13392         This gives us a nice 2% speedup in mcs bootstrap.
13393
13394         * mini-x86.c (peephole_pass): Peephole pass to make
13395         mov  [foo], eax
13396         push [foo]
13397
13398         into
13399
13400         mov [foo], eax
13401         push eax
13402
13403         * mini.c (ip_in_bb): new method.
13404         (mono_method_to_ir): use this method rather than doing the hash
13405         lookup ourselves.
13406
13407         * linear-scan.c (mono_linear_scan): When expiring actives, you
13408         don't need to keep around variables that expire on this
13409         instruction. This makes it so that:
13410              a = b + 1
13411         will turn into:
13412              store (ebx add (ebx, 1))
13413         which will become
13414              add ebx, 1
13415
13416 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
13417
13418         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
13419         combination to avoid doing two copies. Fix up problems with previous
13420         patch.
13421
13422         * mini.c: Fix 64 bit warnings.
13423
13424         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
13425
13426 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
13427
13428         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
13429         changes from the x86 code.
13430
13431         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
13432
13433 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
13434
13435         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
13436         throwing code to reduce its size, unify the AOT and non-aot code and 
13437         get rid of relocations in the AOT case.
13438
13439         * mini-x86.h mini.c exceptions-x86.c 
13440         (mono_arch_get_throw_corlib_exception): New arch specific function to 
13441         raise corlib exceptions which doesn't require relocations in the 
13442         caller.
13443
13444         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
13445
13446 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
13447
13448         * mini.c (mono_emit_method_call): Only allocate the got var when it is
13449         needed.
13450
13451         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
13452         in the AOT case.
13453
13454 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13455
13456         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
13457         with add function when used from Inc/dec atomic 
13458         functions. Re-enabled optimization on x86.
13459         * mini-ops.h: renamed atomic_add functions to
13460         allow _add to match the Interlocked::Add and
13461         _add_next to match Interlocked::Inc/Dec.
13462
13463 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
13464
13465         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
13466         linking of BBs to the end BB, and enabled SSAPRE also with
13467         consprop and copyprop (which was prevented by that bug).
13468
13469 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13470
13471         * mini-x86.c: disabling the Interlocked optimizing code. 
13472
13473 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13474
13475         * aot.c (load_aot_module): Move reading of got_addr after the AOT
13476         file version check.
13477         
13478 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13479
13480         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
13481         interlocked optimization due lack of support on x86, rewrote 
13482         exchange to take into account that base may be in eax.
13483         
13484         xsp works again; activated Interlocked optimizing code.
13485         
13486 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13487
13488         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13489
13490 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
13491
13492         * mini-ops.h: Add new opcodes.
13493
13494         * mini.h: Add new patch types. Add got_var to MonoCompile.
13495
13496         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
13497         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
13498         make it work with all kinds of patchable code.
13499
13500         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
13501         address of the GOT, and referencing entries in the GOT.
13502
13503         * mini.c: Add code to load the GOT address if needed by an opcode.
13504
13505         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
13506         independent AOT code on the x86 using an elf-style Global Offset Table.
13507
13508 2004-12-14  Raja R Harinath  <rharinath@novell.com>
13509
13510         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
13511
13512 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13513
13514         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
13515         when running xsp.
13516
13517 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
13518
13519         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
13520         of Interlocked:Increment/Decrement/Add as inline ops.
13521         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
13522
13523 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
13524
13525         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
13526         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
13527
13528 2004-12-12  Duncan Mak  <duncan@ximian.com>
13529
13530         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
13531         again. `patch_info->table_size' is no longer valid after Zoltan's
13532         commit #37636.
13533
13534 2004-12-12  Martin Baulig  <martin@ximian.com>
13535
13536         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
13537         if we are the "real" method, ie. not an inlined method inside it.
13538
13539 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
13540
13541         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
13542         before we look in the special fields table. This fixes
13543         ../tests/thread-static-init.cs.
13544
13545 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13546
13547         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
13548         for Array get_Rank and get_Length. Fixes bug #70465.
13549
13550 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
13551
13552         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
13553         separate structure to reduce the size of MonoJumpInfo.
13554
13555 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
13556
13557         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
13558
13559 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
13560
13561         * mini.c (mini_get_inst_for_method): Changed to allow ports
13562         to return a MonoInst instead of opcode 
13563         (renamed mini_get_opcode_for_method to better reflect the new functionality)
13564         
13565         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
13566         Allow ports to return a created MonoInst instead of op-code, will enable
13567         new optimizations.
13568         (renamed mini_get_opcode_for_method to better reflected the functionality)
13569
13570 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
13571
13572         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
13573
13574 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13575
13576         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
13577         Fixes #69985.
13578
13579 2004-12-08  Martin Baulig  <martin@ximian.com>
13580
13581         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
13582         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
13583
13584 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13585
13586         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
13587         correctly.
13588
13589         * exceptions.cs: Disable some tests which depend on properties of x86 fp
13590         arithmetic.
13591
13592 2004-12-08  Raja R Harinath  <rharinath@novell.com>
13593
13594         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
13595
13596 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
13597
13598         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
13599         bug introduced by the previous patch.
13600
13601 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13602
13603         * mini-ppc.c, objectc.cs: handle large structs passed by value
13604         (fixes bug #69972).
13605
13606 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
13607
13608         * mini-ppc.c: OP_ARGLIST implementation from
13609         Geoff Norton  <gnorton@customerdna.com>.
13610
13611 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
13612
13613         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
13614         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
13615
13616 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13617
13618         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
13619
13620 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13621
13622         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
13623         support.
13624
13625 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
13626
13627         * mini-sparc.c: Zero out localled-ed memory.
13628
13629         * iltests.il: Add tests for zeroing out localloc-ed memory.
13630
13631 2004-12-04  Martin Baulig  <martin@ximian.com>
13632
13633         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
13634         mono_method_get_signature_full().       
13635
13636 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
13637
13638         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
13639         and some utility functions (always for SSAPRE), integrated SSAPRE.
13640         * mini.h: Likewise.
13641         * driver.c: Added ssapre option.
13642         * ssa.c: Small fix on OP_ARG handling.
13643         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
13644         * Makefile.am: Likewise.
13645
13646 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
13647
13648         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
13649         now in the xp code.
13650
13651         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
13652         icall.
13653
13654 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13655
13656         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
13657         
13658         * cpu-s390.md : Increase instruction length of oparglist.
13659
13660         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
13661
13662 2004-11-30  Martin Baulig  <martin@ximian.com>
13663
13664         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
13665         virtual generic methods.  We call a special helper_compile_generic_method()
13666         icall to retrieve the method from the vtable, inflate and compile
13667         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
13668
13669         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
13670
13671 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
13672
13673         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
13674
13675 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
13676
13677         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
13678         Fixes #69929.
13679
13680 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
13681
13682         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
13683         platforms with PIC aot.
13684
13685 2004-11-28  Martin Baulig  <martin@ximian.com>
13686
13687         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
13688         Fixes gen-112.cs.
13689
13690 2004-11-28  Martin Baulig  <martin@ximian.com>
13691
13692         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
13693         the result of mono_type_get_underlying_type() to check whether
13694         we're byref.
13695
13696 2004-11-26  Martin Baulig  <martin@ximian.com>
13697
13698         * mini.c
13699         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
13700         in the g_assert().
13701
13702 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
13703
13704         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
13705         the same way as the other arguments so they won't get clobbered.
13706
13707         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
13708         calls through R11 since it is clobbered by the trampoline code.
13709
13710 2004-11-26  Raja R Harinath  <rharinath@novell.com>
13711
13712         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
13713         pick up in-tree mscorlib.dll.
13714
13715 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
13716
13717         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
13718
13719         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
13720         runtime data/code are now stored in a table similar to the GOT in ELF. 
13721         This allows the code itself to be position independent.
13722
13723         * aot.c: Fix loading of referenced assemblies after the lazy assembly
13724         loading changes.
13725
13726         * aot.c: Attach ELF type (object/function) directives to all global
13727         symbols.
13728
13729         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
13730
13731         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
13732
13733         * mini-amd64.h: Turn on PIC AOT code.
13734
13735         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
13736         returning the offset within an OP_AOTCONST instruction where the GOT
13737         offset needs to be added.
13738
13739         * mini.h: Bump AOT file format version.
13740
13741 2004-11-25  Martin Baulig  <martin@ximian.com>
13742
13743         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
13744         uninflated generic methods.
13745
13746 2004-11-25  Martin Baulig  <martin@ximian.com>
13747
13748         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
13749
13750 2004-11-24  Martin Baulig  <martin@ximian.com>
13751
13752         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
13753         original klass (this only applies for generic instances).
13754
13755 2004-11-24  Martin Baulig  <martin@ximian.com>
13756
13757         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
13758         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
13759         that array).
13760
13761 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
13762
13763         * mini.c (mono_method_to_ir): Disable inlining for methods containing
13764         localloc. Fixes #69678.
13765
13766         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
13767         
13768 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
13769
13770         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
13771         used SSE registers on pinvoke calls. Fixes #69774.
13772
13773 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
13774
13775         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
13776         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
13777
13778 2004-11-23  Raja R Harinath  <rharinath@novell.com>
13779
13780         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
13781         Refer directly to the mcs/ tree.
13782
13783 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13784
13785         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
13786         Check if a trampoline for a synchronized method is required. 
13787
13788 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
13789
13790         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
13791         with localloc if needed. Throe arithmetric exception in
13792         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
13793         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
13794
13795 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
13796
13797         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
13798         types before switching on type.  Fixes #69622.
13799
13800 2004-11-19  Raja R Harinath  <rharinath@novell.com>
13801
13802         * Makefile.am (check-local): New.  Integrate into 'make check'.
13803         (MCS,RUNTIME): Define using in-tree mono and mcs.
13804         (ILASM): New.
13805         (%.exe): Use $(ILASM).
13806
13807 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
13808
13809         * mini-ppc.c: adjust initial prolog size (bug #69691).
13810
13811 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
13812
13813         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
13814         #69664.
13815
13816 2004-11-17  Raja R Harinath  <rharinath@novell.com>
13817
13818         * Makefile.am (clean-local): Rename from 'clean'.
13819
13820 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13821
13822         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
13823         to mono_arch_is_int_overflow. 
13824         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
13825         SIGFPE events.
13826
13827 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
13828
13829         * declsec.c|h: New files to support declarative security attributes.
13830         Added function to check if a method has (applicable) security.
13831         * mini.c|h: Add check for declarative security attributes in
13832         mono_method_check_inlining.
13833         * Makefile.am: Added declsec.c and declsec.h to the build.
13834
13835 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
13836
13837         * mini.c, mini.h: update to keep dynamic code info per-domain.
13838
13839 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
13840
13841         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
13842         (mini_init): Get rid of it from here too.
13843
13844 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
13845
13846         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
13847         implemented OP_RETHROW (patch by Geoff Norton
13848         <gnorton@customerdna.com>).
13849
13850 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
13851
13852         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
13853         between appdomains.  Fixes appdomain-unload on PPC.
13854
13855 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
13856
13857         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13858         mini-exceptions.c: handle the new wrapper types.
13859         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
13860         token value as a MonoClass* when compiling a wrapper.
13861         mono_jit_create_remoting_trampoline now takes an additional
13862         MonoRemotingTarget parameter.
13863         
13864 2004-11-10  Martin Baulig  <martin@localhost>
13865
13866         * mini.c (mono_method_to_ir): Use `generic_container->context'
13867         rather than creating a new one.
13868
13869 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13870
13871         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
13872
13873         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
13874
13875 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
13876
13877         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
13878         the experimental aot cache stuff.
13879
13880 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
13881
13882         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13883         mini-exceptions.c: update to exception clause structure changes.
13884
13885 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13886
13887         * exceptions-x86.c (throw_exception): Fix warnings.
13888
13889         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
13890         for OP_RETHROW.
13891
13892 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13893
13894         * exceptions-sparc.c (get_throw_exception): Really fix this.
13895
13896 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
13897
13898         * tramp-*.c: we no longer support icalls without wrappers, so
13899         a bit of code can be removed here
13900
13901 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
13902
13903         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
13904         patch.
13905
13906         * cpu-sparc.md: Add op_rethrow.
13907
13908         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
13909
13910         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
13911
13912         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
13913         * mini-ops.h: Add OP_RETHROW.
13914
13915         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
13916
13917         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
13918
13919 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
13920         
13921         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
13922         Makes the output much easier to read
13923
13924 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
13925
13926         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
13927         prevents another huge leak when compiling with ssa. Secondly, the
13928         performance of doing this rather than freeing the lists is much
13929         better. GList does a lock every time you allocate a list link,
13930         so that it can use a memory pool. So, it is better to just use
13931         a memory pool of our own.
13932         
13933         * ssa.c, linear-scan.c: replace g_list_remove_link with
13934         g_list_delete.  The remove one does not free the GList, so we were
13935         leaking memory. On -O=all --compile-all with corlib, this cut down
13936         3 MB of allocations.
13937
13938 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
13939
13940         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
13941
13942         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
13943
13944         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
13945         into a new function mono_create_jit_trampoline ().
13946
13947 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
13948
13949         * trace.c (get_spec): Allow tracing of classes without a namespace.
13950
13951 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
13952
13953         * mini.c: Fix pointer overwrite in mini_method_compile.
13954
13955 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
13956
13957         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
13958         The darwin ABI needs some special handling for 1 and 2 byte structs
13959         Lets use lbz/lhz instead of lwz everywhere.
13960         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
13961         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
13962         Use stb/sth for the former, and put the latter always on stack instead of in
13963         argument registers.
13964
13965 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
13966
13967         * trace.c (is_filenamechar): Add '_'.
13968
13969 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
13970
13971         * mini-s390.c: Fix prolog length to allow for large trace requirements.
13972
13973         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
13974
13975 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
13976
13977         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
13978         depends on libmonogc. Fixes #68805.
13979
13980 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
13981
13982         * mini.c (mono_jit_free_method): Provide extra information for
13983         this error.  Currently this leaks, but will be turned into a
13984         developer option in the future.
13985
13986 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
13987
13988         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
13989
13990 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
13991
13992         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
13993         boundary. Fixes reading of PATCH_INFO_R4 and R8.
13994         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
13995
13996 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
13997
13998         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
13999         trampolines for AOT code.
14000
14001 2004-10-22    <vargaz@freemail.hu>
14002
14003         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
14004         constructed types. Fixes #68136.
14005
14006 2004-10-21  Martin Baulig  <martin@ximian.com>
14007
14008         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
14009         if it returns true, unwind the stack to the call instruction.
14010
14011 2004-10-21    <vargaz@freemail.hu>
14012
14013         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
14014
14015         * mini.h: Bump AOT version number.
14016
14017         * objects.cs: Add another test for unbox trampolines.
14018
14019         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
14020         valuetype methods.
14021
14022 2004-10-20    <vargaz@freemail.hu>
14023
14024         * driver.c: Add SHARED to the set of optimizations tested.
14025
14026         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
14027
14028         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
14029         used by CEE_NEWARR.
14030
14031         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
14032
14033 2004-10-20  Martin Baulig  <martin@ximian.com>
14034
14035         * mini-exceptions.c (mono_handle_exception): Call
14036         mono_debugger_handle_exception() to tell the debugger about
14037         catch/finally clauses.
14038
14039 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
14040
14041         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
14042
14043         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
14044         #68447.
14045
14046 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
14047
14048         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
14049         methods as their native size, fixed bug #57543, #57545.
14050         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
14051         This saves a temporary register and mullw call down into 1 (minor perf
14052         increase for cases like sum = sum * 5;  This use to translate into:
14053             li r11,5
14054             mullw r28,r28,r11
14055         It now translates to
14056             mulli r28,r28,5
14057
14058 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
14059
14060         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
14061         #68388.
14062
14063 2004-10-11  Martin Baulig  <martin@ximian.com>
14064
14065         * mini.c (mono_method_to_ir): If we're a generic method, get the
14066         MonoGenericContainer from our MonoMethodNormal and create a
14067         MonoGenericContext from it.
14068
14069 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
14070
14071         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
14072
14073         * basic-long.cs: Add test for checked i8->i2 cast.
14074
14075 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14076
14077         * inssel-ppc.brg: added a couple of speedup rules.
14078
14079 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
14080
14081         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
14082         to speed up rebuilds.
14083
14084 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14085
14086         * mini-s390.c: Minor fix to OP_OR_IMM.
14087
14088 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
14089
14090         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
14091         better. Fixes appdomain-unload.exe on sparc.
14092
14093 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
14094
14095         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
14096         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
14097         see bug 67324.
14098
14099 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
14100
14101         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
14102
14103 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
14104
14105         * mini.c: Always generate a field read/write wrapper for members
14106         of the class MarshalByRefObject since the actual instance could
14107         be a CBO.
14108
14109 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
14110
14111         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
14112
14113 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
14114
14115         * driver.c mini.h trace.c: Move the setting of the main assembly into
14116         a separate function called mono_trace_set_assembly () and call it after
14117         actually loading the main assembly. Fixes #66872.
14118
14119 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
14120
14121         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
14122         using the code manager.
14123
14124 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
14125
14126         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
14127
14128 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
14129
14130         * cpu-amd64.md: Fix bug in previous patch.
14131         
14132         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
14133         #66650.
14134
14135 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
14136
14137         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14138         mini-exceptions.c: updates for changed stack walk interface.
14139
14140 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14141
14142         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
14143
14144 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
14145
14146         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
14147
14148 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
14149
14150         * driver.c (mini_regression_list): Do not call mono_assembly_close 
14151         since assemblies can't be unloaded.
14152         
14153 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14154
14155         * cpu-amd64.md: Fix more instruction lengths.
14156
14157         * cpu-amd64.md: Fix lengths of some instructions.
14158
14159 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
14160
14161         * inssel.brg: Make the array ldelema check aot friendly.
14162
14163 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14164
14165         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
14166
14167         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
14168
14169 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
14170
14171         * mini-x86.c: Fix build.
14172
14173         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
14174         mono_type_get_underlying_type () helper function to simplify code.
14175         
14176 2004-09-09  Martin Baulig  <martin@ximian.com>
14177
14178         * mini-amd64.c: Don't access `type->data.klass' directly, call
14179         mono_class_from_mono_type() instead since the type may be a
14180         generic instance.
14181
14182 2004-09-09  Martin Baulig  <martin@ximian.com>
14183
14184         * mini-amd64.c (get_call_info): Fix support for generic instances.
14185         (add_valuetype): Use mono_class_from_mono_type() to get the class
14186         since we can be a generic instance.
14187
14188 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
14189
14190         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
14191
14192 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
14193
14194         * liveness.c: reset spill costs on each scan: bug 62107
14195
14196 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
14197
14198         * exceptions-sparc.c (mono_arch_find_jit_info): remove
14199         unnecessary line that doesn't compile
14200
14201 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
14202
14203         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
14204         trampolines, make them call an error function so people can fix their
14205         code.
14206
14207 2004-09-06  Martin Baulig  <martin@ximian.com>
14208
14209         * mini.c (mono_method_to_ir): When initializing locals, handle a
14210         generic instances like a valuetype if it's a valuetype and like a
14211         class if it's a class.
14212
14213 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14214
14215         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
14216         stack. Fixes #64674.
14217
14218         * exceptions.cs: Add test for unwinding of call arguments.
14219
14220 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
14221
14222         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
14223         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
14224         set the carry/borrow flag). The sparc and s390 implementations
14225         can now use optimized versions (and simplify the code). ppc bugfixes.
14226
14227 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14228
14229         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
14230
14231 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
14232
14233         * inssel-amd64.brg: Remove leftover 32 bit rule.
14234
14235         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
14236
14237 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
14238
14239         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
14240         mono_arch_find_jit_info functions into a new function. Fix a memory
14241         leak.
14242
14243         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
14244         refactored code.
14245         
14246 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14247
14248         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
14249         as well.
14250         
14251         * exceptions.cs: Add array size tests.
14252
14253         * mini.c: Allocate a separate icall wrapper for each arity of 
14254         mono_array_new_va. Fixes #59509.
14255
14256         * exceptions.cs: Add testcase for 64578.
14257
14258         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
14259
14260         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
14261         
14262 2004-09-02  Martin Baulig  <martin@ximian.com>
14263
14264         * mini.c (mono_method_to_ir): When initializing the locals, call
14265         handle_initobj() on the generic instance itself, not its
14266         underlying type.
14267
14268 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14269
14270         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
14271         MonoJitInfo for dynamic methods.
14272
14273         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
14274
14275         * mini.c: Add support for freeing JIT data for dynamic methods.
14276         
14277 2004-09-01  Martin Baulig  <martin@ximian.com>
14278
14279         * mini-x86.c (is_regsize_var): Added support for generic
14280         instances.
14281         (mono_arch_emit_prolog): Make this compile again, use
14282         `x86_push_imm_template (code)'.
14283
14284 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
14285
14286         * mini-x86.c: make all push_imm instructions that get
14287         patched always emit the long form
14288
14289 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
14290
14291         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
14292         in a per-domain hash.
14293
14294         * mini-amd64.c (merge_argument_class_from_type): Handle generic
14295         types.
14296
14297 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
14298
14299         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
14300         work.
14301         
14302         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
14303         work.
14304
14305         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
14306         Beginnings of SSE2 support.
14307
14308         * exceptions.cs: Add more tests for checked int<->uint casts.
14309
14310 2004-08-28  Martin Baulig  <martin@ximian.com>
14311
14312         * mini-x86.c (mono_arch_instrument_epilog): Added support for
14313         generic instances.
14314
14315         * mini.c
14316         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
14317         Handle generic instances recursively.
14318
14319 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14320
14321         * iltests.il: test for conv.u8 on a constant
14322
14323 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14324
14325         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
14326         LCONV_x4 (shrun_32 (membase)).
14327
14328 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14329
14330         * inssel-x86.brg: c&p rules for push/setret of long
14331
14332 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14333
14334         * inssel-x86.brg: c&p rules for compare (base, regvar) and
14335         compare (regvar, base)
14336
14337         * inssel-x86.brg: more burg love
14338
14339         * inssel.brg: more cleanup
14340
14341         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
14342
14343 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14344
14345         * basic-long.cs, basic-calls.cs: new tests for optimization.
14346
14347 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
14348
14349         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
14350         patch.
14351
14352 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14353
14354         * mini-amd64.c (read_tls_offset_from_method): Add another case.
14355         
14356 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
14357
14358         * inssel.brg (mini_emit_memcpy): use 
14359         NO_UNALIGNED_ACCESS to disable memcpy optimization
14360
14361 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14362
14363         * mini-amd64.c: Handle generic types in various places.
14364
14365         * mini.c (mono_method_to_ir): Handle generic types in init locals.
14366
14367 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
14368
14369         * mini.c (handle_box): Fix warning.
14370
14371         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
14372
14373         * mini-amd64.h: Enable the emit_state optimization.
14374
14375         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
14376
14377         * mini-amd64.c: Add some new 64 bit peephole opts.
14378
14379         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
14380
14381         * cpu-amd64.md: sreg1 of div instructions must be %rax.
14382
14383         * mini-amd64.c: Register allocator fixes.
14384
14385         * mini.c: Add an optimization to emit_state to avoid allocation of new
14386         registers on some platforms.
14387
14388 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
14389
14390         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
14391
14392         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
14393         allocation. Fixes #63085.
14394
14395         * basic-long.cs: Add new regression test.
14396
14397         * mini-amd64.c: Register allocator improvements.
14398
14399 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
14400
14401         * mini-amd64.c (read_tls_offset_from_method): Add another code
14402         sequence.
14403
14404         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
14405         instruction sequence for nullifying class init trampolines.
14406
14407         * objects.cs: Add new regalloc test.
14408
14409         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
14410
14411 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14412
14413         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
14414         
14415         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
14416         arguments.
14417
14418         * driver.c: Fix profiling after TLS changes.
14419         
14420         * driver.c (mono_main): Set mono_stats.enabled if needed.
14421
14422         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
14423         CEE_BOX.
14424
14425 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
14426
14427         * mini-x86.c: use a 1 op rather than a 2 op tls access
14428         instruction -> faster.
14429
14430 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14431
14432         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
14433         x86 backend.
14434
14435 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
14436
14437         * exceptions-sparc.c (throw_exception): fix typo
14438
14439 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
14440
14441         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
14442         set tree->dreg correctly with tls. Allow any
14443         register to be used.
14444
14445         * mini-x86.c (read_tls_offset_from_method): add new code
14446         generation pattern seen with GCC.
14447
14448
14449 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
14450
14451         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
14452         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14453         exceptions-sparc.c: fix some performance issues in exception
14454         handling and setting of the stack trace for exceptions that were
14455         already thrown.
14456
14457 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14458
14459         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
14460         x86 backend.
14461         
14462         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
14463         registers.
14464
14465 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
14466
14467         This patch inlines tls access, when possible.
14468         
14469         * mini.h: new arch functions for TLS intrinsics.
14470         All platforms updated with a stub.
14471
14472         * mini.c: use the new intrinsics
14473
14474         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
14475         arch specific intrinsic for tls variables
14476
14477 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14478
14479         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
14480         under windows.
14481
14482 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14483
14484         * mini.c: thread local allocation
14485
14486 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
14487
14488         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
14489
14490         * Makefile.am: Link against the static version of libmonogc.
14491         
14492         * Makefile.am: Link the static versions of the convenience libraries
14493         into the mono executable.
14494
14495         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
14496
14497 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
14498
14499         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
14500         on integer overflow.
14501
14502         * mini-amd64.c: Reorganize function call code.
14503
14504         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
14505
14506 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14507
14508         * inssel-x86.brg: use xor eax,eax.
14509         
14510         * basic.cs: new tests
14511
14512 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14513
14514         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
14515         in exception throwing code.
14516         
14517 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14518
14519         * inssel-x86.brg: use xor esi,esi.
14520
14521 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14522
14523         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
14524         can trace methods compiled during mini_init () too.
14525
14526         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
14527         CEE_CONV_U4.
14528
14529 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14530
14531         * Makefile.am: static link on x86 (r=zoltan)
14532
14533 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14534
14535         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
14536         code since it causes some programs to fail.
14537
14538 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
14539
14540         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
14541
14542 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14543
14544         * mini.c: ovfops_op_map - add STACK_OBJ case for
14545         CONV_I 
14546         * basic.cs: add test_0_pin_string as test
14547         case for above.
14548
14549 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14550
14551         * Makefile.am: build C# if srcdir != builddir
14552
14553 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
14554
14555         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
14556         fall-through blocks.
14557
14558 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
14559
14560         * driver.c: enable loop by default again and include abcrem in -O=all.
14561
14562 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
14563
14564         * iltests.il: Add some localloc tests.
14565
14566         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
14567
14568         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
14569         Fixes #62574.
14570
14571         * inssel-amd64.brg: Add some optimizations.
14572
14573         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
14574         for gcc-3.4.
14575
14576         * Makefile.am: Statically link mono against libmono on AMD64.
14577         
14578         * mini-amd64.c inssel-amd64.brg: Optimizations.
14579
14580 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
14581
14582         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
14583
14584         * tramp-amd64.c: Patch calling code in trampolines.
14585
14586 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
14587
14588         * mini-amd64.c: pinvoke struct passing fixes.
14589
14590 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
14591
14592         * mini-sparc.c: redo change, make mono_arch_cpu_init call
14593         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
14594
14595 2004-08-05  Duncan Mak  <duncan@ximian.com>
14596
14597         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
14598         CEE_LDELEM_ANY.
14599
14600 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14601
14602         * mini-amd64.c (emit_move_return_value): Move return value for normal
14603         calls too.
14604
14605 2004-08-05  Martin Baulig  <martin@ximian.com>
14606
14607         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
14608         `type->type'; just modify `type' itself when dealing with enums
14609         and generic instances.
14610         (check_call_signature): Make `simple_type' a `MonoType *'.
14611
14612 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14613
14614         * mini.c: Use OP_PADD to add offsets to addresses.
14615
14616         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
14617
14618 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
14619
14620         * mini-sparc.c (mono_arch_emit_epilog): fix check
14621         for folding last op into restore instruction
14622
14623 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14624
14625         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
14626         helper methods using the code manager.
14627         
14628         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
14629
14630         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
14631
14632 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14633         
14634         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
14635           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
14636
14637         * mini-s390.c: fix tail processing
14638
14639 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
14640
14641         * mini-ppc.c: mul.ovf.un exception name fix.
14642
14643 2004-08-03  Martin Baulig  <martin@ximian.com>
14644
14645         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
14646         instances; before jumping to `handle_enum', also modify `ptype'.
14647
14648 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
14649
14650         * cpu-sparc.md: fcall maximal length too small.
14651
14652 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
14653
14654         * mini-amd64.c mini.h: Add initial support for passing/returning 
14655         structures to/from pinvoked methods.
14656
14657 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
14658
14659         * mini-ppc.c: reg allocator fix.
14660
14661 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
14662
14663         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
14664
14665         * inssel.brg: Optimize memset on 64 bit machines.
14666
14667         * mini-amd64.c: Fix some vararg cases.
14668
14669 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14670
14671         * mini-s390.c: Corrected macro in emit_float_to_int
14672
14673         * s390-abi.cs: Tests to exercise the s390 ABI
14674
14675 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14676
14677         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
14678         caller saved regs.
14679
14680         * basic.cs: Add a test for add.ovf.un.
14681
14682 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
14683
14684         * mini-sparc.c: add case for OP_IDIV_UN
14685
14686 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14687
14688         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
14689         
14690         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
14691
14692 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
14693
14694         * basic.cs: regression tests.
14695
14696         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
14697         regressions.
14698
14699 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14700
14701         * basic.cs: Add a new test.
14702
14703         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
14704         and AOT. Various fixes and optimizations.
14705
14706         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
14707
14708 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
14709
14710         * mini-ppc.c: make sure temp regs are not used for global reg
14711         allocation.
14712
14713 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
14714
14715         * cpu-sparc.md: conv_i8 fix for 64bits
14716
14717         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
14718
14719 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
14720         
14721         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
14722         add opcode for cmp BYTE PTR [eax], imm.
14723
14724         * inssel.brg: Make memcpy and memset takes bases.
14725
14726 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14727
14728         * *-amd64.*: More AMD64 work.
14729         
14730 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14731
14732         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
14733         add a compare-not-equal opcode.
14734         
14735 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
14736
14737         * mini.c: Use mono_init_from_assembly instead of mono_init.
14738         
14739 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14740
14741         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
14742
14743         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
14744
14745         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
14746
14747         * inssel.brg: 64 bit fixes.
14748
14749         * mini.h (MonoCallInst): Add some AMD64 specific data.
14750
14751         * mini.h: Add some OP_P opcodes.
14752
14753 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14754
14755         * basic.cs: tests for 61797 and 61740
14756
14757 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
14758
14759         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
14760         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
14761
14762 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
14763
14764         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
14765
14766         * *-amd64*.*: Ongoing AMD64 work.
14767
14768 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
14769
14770         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
14771
14772         * *-amd64*: Ongoing AMD64 work.
14773
14774         * mini-arch.h: Add AMD64 support.
14775
14776         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
14777
14778         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
14779
14780         * mini-ops.h: Add new opcodes.
14781
14782         * Makefile.am: Add AMD64 support.
14783
14784         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
14785         rules into the inssel-long*.brg files.
14786
14787         * *-amd64.*: Add beginnings of AMD64 backend.
14788
14789 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
14790
14791         * mini.c (print_dfn): commenting out the code that prints
14792         the cil. With -O=deadce, this makes -v -v crash.
14793         
14794         * cpu-pentium.md: make checkthis have a length of 2
14795
14796 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
14797
14798         * mini-sparc.h: fix implementations of __builtin
14799         functions for Sun compiler for V9.
14800
14801 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
14802
14803         * mini.c: use the new stelem.ref wrapper
14804         * exceptions.cs, arrays.cs: new stelem.ref tests
14805
14806 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14807
14808         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
14809         new XSP should work with these changes).
14810
14811 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
14812         
14813         * inssel-{long32,x86,}.brg: trivial optimizations.
14814         
14815 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
14816
14817         * mini.c: load value when emitting box operation in
14818         constrained calls.
14819
14820 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
14821
14822         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
14823         is one byte shorter than cmp DWORD PTR [eax], 0.
14824
14825 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
14826
14827         * inssel-ppc.brg: arguments on the stack are always
14828         relative to the stack pointer (spotted by Neale Ferguson).
14829
14830 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14831
14832         * exceptions-x86.c: delay appending the method name to the trace until
14833         after mono_jit_info_table_find is called, as this gets the real
14834         MonoMethod.
14835
14836 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
14837
14838         * aot.c: register roots
14839
14840 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14841
14842         * aot.c : I could just use PLATFORM_WIN32 flag.
14843
14844 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14845
14846         * aot.c : Reverting the previous fix. This time it broke linux build.
14847
14848 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14849
14850         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
14851
14852 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
14853
14854         * mini.c (handle_stack_args): Remove some more debugging code.
14855         
14856         * mini.c (handle_stack_args): Remove debug output left in by mistake.
14857
14858         * driver.c mini.h aot.c: Allow additional options to be specified with
14859         --aot and pass them to mono_compile_assembly.
14860
14861         * aot.c: Add experimental code to AOT compile all loaded assemblies
14862         on demand and save the code into a cache in the filesystem.
14863
14864         * aot.c: Add support for more wrapper methods.
14865         
14866         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
14867         58863.
14868
14869         * cpu-*.md: Remove removed opcodes.
14870
14871         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
14872         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
14873         related icalls to marshal.c.
14874
14875 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
14876
14877         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
14878
14879         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
14880
14881         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
14882
14883 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
14884         * liveness.c: If liveness is recomputated we need to reset the information
14885         for each variable. This way, if the liveness range has been narrowed
14886         by optimizations that happened after the last computation, we can return
14887         a smaller range.
14888         
14889         For example, if you have
14890         
14891         {
14892                 int i = 0;
14893                 
14894                 // Tons of code that does not affect i
14895                 
14896                 i = foo ();
14897                 ...
14898         }
14899         
14900         i = 0 is dead code and will be removed by SSA. However, when
14901         linear scan gets to the code, i will still appear to be live
14902         throughout the entire block. This prevents good register allocation.
14903
14904 2004-07-06  Martin Baulig  <martin@ximian.com>
14905
14906         * debug-mini.c (mono_debug_init_method): Allow
14907         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
14908         (mono_debug_add_icall_wrapper): New method.
14909
14910         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
14911
14912 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
14913
14914         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
14915         optimization.
14916
14917 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
14918
14919         * aot.c (mono_aot_load_method): Fix loading of debug info.
14920
14921 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14922
14923         * aot.c: Add logging support.
14924
14925 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14926
14927         * mini.h: Add prototype for mono_print_method_from_ip.
14928
14929         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
14930
14931         * inssel.brg: 64 bit fixes.
14932
14933         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
14934         inssel-long32.brg.
14935
14936         * Makefile.am: Add SPARC64 support.
14937
14938 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14939
14940         * aot.c: Fix alignment problems on 32 bit platforms.
14941
14942 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14943
14944         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
14945         SPARC64.
14946
14947         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
14948         problems.
14949
14950         * mini.h: Bump AOT file version. Some 64 bit fixes.
14951
14952 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14953
14954         * inssel-sparc.brg: Add new rule to avoid register moves.
14955
14956         * inssel.brg: Add ldind_to_load_membase helper function.
14957
14958 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
14959
14960         * mini.c: OffsetToStringData intrinsic.
14961         
14962 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14963
14964         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
14965
14966         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
14967         regression tests.
14968
14969         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
14970 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
14971
14972         * mini.c: reinstated mono_compile_get_interface_var()
14973         on x86, too, since the change breaks the Gtk# build there as well.
14974
14975 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14976
14977         * driver.c: remove loop from the default optimizations: it seems to
14978         interact badly with some of the other options (see bug #60613).
14979
14980 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
14981
14982         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
14983         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
14984
14985 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
14986
14987         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
14988         vararg-using methods.
14989
14990 2004-06-21  Martin Baulig  <martin@ximian.com>
14991
14992         * mini/mini-exceptions.c
14993         (mono_handle_exception): Added `gpointer original_ip' argument.
14994         After calling mono_unhandled_exception(), call
14995         mono_debugger_unhandled_exception() and if that returns true,
14996         restore the context and return.
14997
14998 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
14999
15000         * mini-ppc.c: prefer the use of relative branches so
15001         they won't need to be patched in aot code (patch from Patrick Beard).
15002
15003 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
15004
15005         * aot.c: patch from Patrick Beard to make the output assembly
15006         more correct for the MacOSX assembler. Small tweak to
15007         generate sane images on Linux/PPC, too.
15008
15009 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15010
15011         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
15012         case until bug #59509 is fixed (shows up in #60332).
15013
15014 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15015
15016         * mini.c: make sure the needed wrappers are compiled, too, with
15017         precomp.
15018
15019 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
15020
15021         * driver.c: remove NPTL reference in --version output.
15022
15023 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15024
15025         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
15026         generate valid assembly for the Mach-O assembler.
15027
15028 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
15029
15030         * driver.c: don't include abcrem in the all optimization specifier
15031         since it slows down jit compilation too much for now.
15032
15033 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
15034
15035         * mini.c: use BIGMUL only if both operands have the same signage.
15036         * iltests.il: Test for bug 60056. (errors related to signage in
15037         BIGMUL).
15038
15039         r=lupus.
15040
15041 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
15042
15043         * mini.c, aot.c: memory leak fixes.
15044
15045 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15046
15047         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
15048
15049 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
15050
15051         * Makefile.am: remove the -static hack completely, it links in
15052         statically glib as well.
15053
15054 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
15055
15056         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
15057         * exceptions.cs: make it compile with new mcs/csc.
15058
15059 2004-06-03 Massimiliano Mantione <massi@ximian.com>
15060         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
15061         and added relevant test case.
15062
15063 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
15064
15065         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
15066         regressions in gtk-sharp.
15067
15068 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
15069
15070         * exceptions.cs: New regression tests.
15071
15072         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
15073
15074 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
15075
15076         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
15077
15078 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
15079
15080         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
15081
15082         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
15083
15084 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
15085
15086         * mini.c (mono_jit_runtime_invoke): Init class in this
15087         method instead of trusting mono_jit_compile_method to
15088         do the work (because wrappers can be in object class)
15089
15090 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
15091
15092         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
15093
15094         * basic-long.cs: New regression test.
15095
15096 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
15097
15098         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
15099         and div/rem checks.
15100
15101 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
15102
15103         * Makefile.am: fix miguel's change to build mono statically against
15104         libmono (track build dependencies).
15105
15106 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15107
15108         * cfold.c: Some glib versions do not have G_MININT32.
15109
15110 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
15111
15112         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
15113         with precision of tan, atan, sin and cos, and implemented related
15114         regressions tests (fixes bug 54467, but one new problem appeared and
15115         is not fixed yet).
15116
15117 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15118
15119         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
15120
15121         * exceptions.cs: Add test for constant folding && division by zero.
15122
15123         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
15124         since driver.c is in libmono too, so the optimization was useless.
15125
15126         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
15127         variable to driver.c so the compiler can emit more efficient code to
15128         access them.
15129
15130 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15131
15132         * Makefile.am: don't distribute generated inssel.[ch] files.
15133
15134 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
15135
15136         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
15137         into the default appdomain. Fixes #58707.
15138
15139         * jit-icalls.c: Remove the broken approximation for truncl, doing
15140         no conversion is better.
15141
15142         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
15143         Fixes #58863.
15144
15145 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
15146
15147         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
15148         of the mcrxr instruction which is not available on some processors
15149         even if it's documented to be. Implement add and sub overflow correctly
15150         (still not complete for long unsigned). Speed up icalls a bit.
15151
15152 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
15153
15154         * mini.c (mono_jit_compile_method_with_opt): Make sure that
15155         we run .cctor in the current domain instead of target_domain.
15156         
15157         Fixes bug #58558, .cctor not being called in -O=shared.
15158
15159 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15160
15161         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
15162
15163 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
15164
15165         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
15166         which can be done with an imm8, do it that way.
15167         (mono_arch_output_basic_block): ditto for a jmp
15168         (mono_arch_emit_prolog): Computate maximum offset of a label.
15169
15170 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
15171
15172         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
15173         now tries to allocate prefered physical reg's for virtual
15174         regs. This reduces the number of emited spills/loads with
15175         20-30% on our core assemblies.
15176
15177 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15178
15179         * jit-icalls.c: truncl() is not needed and trunc() is
15180         the correct thing to do anyway (bug #58287).
15181
15182 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
15183
15184         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
15185         if available.
15186
15187 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
15188
15189         * driver.c: enable loop optimizations by default.
15190
15191 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
15192
15193         * mini-x86.c: fix calc of max loop size when aligning loops start.
15194
15195 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
15196
15197         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
15198         the stack.
15199
15200 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
15201
15202         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
15203         should set carry.
15204
15205         * basic-long.cs: Add tests for add/subtract of immediates with carry.
15206
15207         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
15208         
15209         * mini.c (inline_method): Allways inline some wrappers even if the cost
15210         is too large. Fixes #58785.
15211
15212         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
15213         
15214 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
15215
15216         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
15217         (crichton@gimp.org). Beginning of support for sparc/linux.
15218
15219         * mini-sparc.c: Optimize retrieval of LMF address.
15220
15221 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
15222
15223         * exceptions-ppc.c:  handle alloca in methods with clauses.
15224
15225 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
15226
15227         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
15228
15229 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
15230
15231         * mini.c: Delegate most of the abort signal work to 
15232           mono_thread_request_interruption, which also handles Stop and Suspend
15233           states.
15234
15235 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
15236
15237         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
15238         supports the save/restore lmf opcodes.
15239
15240 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
15241
15242         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
15243         by gcc-3.4 as well.
15244
15245         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
15246
15247 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15248
15249         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
15250         methods which contain array accesses.
15251
15252         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
15253         boundaries. Fixes #58537.
15254
15255         * iltests.il: Add regression test for #58537.
15256
15257 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
15258
15259         * mini-x86.c (mono_arch_local_regalloc): Last part of
15260         fix for bug #58633 (releasing register to early).
15261
15262 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
15263
15264         * basic-long.cs: Add new regression test.
15265
15266 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
15267
15268         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
15269         register too early on the chain.
15270
15271 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15272
15273         * mini.c (create_helper_signature): Use a helper function to reduce
15274         the code which needs to be written. Also set the calling convention of
15275         icalls on windows. Fixes #57840.
15276
15277 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
15278
15279         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
15280         exceptions-ppc.c: added helper function to get the instruction address
15281         from a signal handler context.
15282
15283 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15284
15285         * helpers.c: use g_get_tmp_dir. Invokes happyness 
15286         from gonzalo.
15287
15288 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15289
15290         * helpers.c: Add new env variable to pass args to objdump.
15291         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
15292
15293 2004-05-17  Radek Doulik  <rodo@ximian.com>
15294
15295         * Makefile.am (common_sources): added abcremoval.h so it get
15296         disted and daily mono packages on go-mono.com will build again
15297
15298 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
15299
15300         * abcremoval.c: Fixed coding style, added copyright header.
15301
15302         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
15303
15304         * mini.h: Added prototype for abc removal main function.
15305
15306         * build_relations_propagation_table.pl: Added copyright header.
15307
15308 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
15309
15310         * basic-long.cs: reg test for complex ceq_long bug.
15311
15312 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
15313
15314         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
15315         reg in long and clob case (bug #58343). Fixed/added comments.
15316
15317 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
15318
15319         * mini.c (mono_jit_runtime_invoke): Follow new convention
15320         of calling the invoke method with an function pointer.
15321
15322 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
15323
15324         * ChangeLog: Fix author of memory leak patch.
15325
15326 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
15327
15328         * Makefile.am: fix make dist as well...
15329
15330
15331 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
15332
15333         * cfold.c: Made so that conversions from pointer to int4 are no-ops
15334         on archs where pointers are 4 bytes long.
15335
15336         * Makefile.am: Added abcremoval.c source file.
15337
15338         * abcremoval.c: Added abcremoval.c.
15339
15340         * abcremoval.h: Added abcremoval.h.
15341
15342         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
15343
15344         * inssel.brg: Enabled bounds check removal.
15345
15346         * mini.c: Added support for abcrem optimization.
15347
15348         * mini.h: Added abcrem optimization label.
15349
15350         * driver.c: Added support for abcrem optimization.
15351
15352         * propagated_relations_table.def: Added propagated_relations_table.def.
15353
15354 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
15355
15356         * mini.c, cfold.c: fix style.
15357
15358 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15359
15360         * mini.c: handle issue with the low-level implementation of
15361         some long opcodes (bug #54209).
15362
15363 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
15364
15365         * basic.cs: test for my new cmov stuff.
15366
15367 2004-05-13      Patrik Torstensson
15368
15369         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
15370         opt and added peephole documentation.
15371
15372 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
15373
15374         * tramp-ppc.c: rewrote the generic trampoline code.
15375
15376 2004-05-11      Patrik Torstensson
15377
15378         * mini-x86.c: optimize long shl/shr asm code (one less branch)
15379
15380 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
15381
15382         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
15383
15384         * mini.h mini.c dominators.c: Applied patch from Derek Woo
15385         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
15386
15387         * mini.c: Add new icalls for AsAny marshalling.
15388
15389 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
15390
15391         * tramp-ppc.c, mini-ppc.c: more cleanups.
15392
15393 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15394
15395         * mini.c: no warnings.
15396
15397 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15398
15399         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
15400
15401 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
15402
15403         * mini.c: In the thread abort signal handler, if the thread is in the
15404         process of being stoped, don't throw the Abort exception, just stop the
15405         thread.
15406
15407 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
15408
15409         * tramp-ppc.c: removed old code.
15410
15411 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15412
15413         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
15414         do some simple speed optimizations on ppc.
15415
15416 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
15417
15418         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
15419         and large offsets in load/store.
15420
15421 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15422
15423         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
15424         it causes regressions.
15425
15426 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15427
15428         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
15429         support.
15430
15431 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15432
15433         * jit-icalls.c: remove warnings.
15434         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
15435         speedups for unsafe code.
15436
15437 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
15438
15439         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
15440
15441 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
15442
15443         * basic-calls.cs: Add new regression test.
15444
15445         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
15446         more portable.
15447
15448         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
15449
15450         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
15451         is no longer used.
15452
15453 2004-05-06      Patrik Torstensson
15454
15455         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
15456         long reg allocation in any reg (not only eax:edx) and implemented 
15457         long shl/shr ops in asm instead of helpers.
15458
15459 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
15460
15461         * mini-sparc.h: Fix warnings.
15462
15463         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
15464         stack.
15465
15466         * mini-exceptions.c (mono_handle_exception): Call the filter in a
15467         separate statement for clarity.
15468
15469         * mini-sparc.c: Update status.
15470
15471 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
15472
15473         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
15474         here.
15475
15476 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15477
15478         * inssel-ppc.brg: another small pre-release workaround:
15479         we don't do overflow detection for long_sub_un.
15480
15481 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15482
15483         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
15484         (also works around a weird ppc bug: 57957).
15485
15486 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
15487
15488         * tramp-ppc.c: trampoline fixes.
15489
15490 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
15491
15492         * mini-ppc.c: fixed typos.
15493
15494 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
15495
15496         * mini-ppc.c, exceptions-ppc.c: more code saves registers
15497         at the top of the stack. Fixed typos. Use a frame registers
15498         for all the methods with exception clauses.
15499
15500 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15501
15502         * exceptions-ppc.c: restore fp registers.
15503
15504 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
15505
15506         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
15507         order from the stack top (moved the stack room to save the
15508         return value for trace after the param area). Fixed corruption
15509         in restoring registers on unwind.
15510
15511 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15512
15513         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
15514
15515 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15516
15517         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
15518         and prolog/epilog for methods that use it. Allow
15519         enough param area room for varargs methods. Fix miguel's
15520         breakage in exception handling.
15521
15522 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15523
15524         * Makefile.am: run genmdesc only on current arch.
15525
15526 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15527
15528         * exceptions-x86.c:
15529         * mini-x86.h: fix the build on windows.
15530
15531 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
15532
15533         * 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.
15534
15535         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
15536
15537         * mini-exceptions.c: New file.
15538         
15539         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
15540         Move some parts of the x86 exception handling code to an 
15541         arch-independent file so it can be shared with other ports.
15542
15543 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
15544
15545         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
15546
15547 2004-04-26  David Waite  <mass@akuma.org>
15548
15549         * driver.c: remove comma from end of enumeration declaration
15550
15551 2004-04-26  Jackson Harper  <jackson@ximian.com>
15552
15553         * driver.c: parse config file before loading first assembly. This
15554         allows the user gac to be enabled/disabled. 
15555         
15556 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
15557
15558         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
15559         simpler mechanism: we do not care what is encoded initially
15560         (branch absolute or relative), we care about the code and its
15561         target.  I kept the old code for reference for now.
15562
15563         The new code tries first to determine if the jump is anywhere in
15564         the -/+32 absolute meg range, if it succeeds, it encodes using the
15565         absolute branch;  If not, it tried to find something in the
15566         relative range, if not, it uses the handle_thunk code. 
15567
15568 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
15569
15570         * exceptions-ppc.c: use the correct ip register on macosx.
15571
15572 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
15573
15574         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
15575
15576 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
15577
15578         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
15579         Raise exception on integer divide by zero by hand since the hw
15580         doesn't support it. Handle NaNs in FP compares.
15581
15582 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
15583
15584         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
15585         code reducing duplication between the platforms and enabled
15586         signal exception handling (on linux for now).
15587
15588 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
15589
15590         * exceptions-ppc.c: more macosx support.
15591
15592 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15593
15594         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
15595
15596 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
15597
15598         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
15599
15600 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
15601
15602         * iltests.il: more tests.
15603
15604 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15605
15606         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
15607         vars as well.
15608
15609 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
15610
15611         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
15612
15613 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15614
15615         * liveness.c: Mark variables as volatile in all basic blocks reachable
15616         from exception clauses.
15617
15618 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
15619
15620         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
15621         inlining.
15622
15623 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
15624
15625         * iltests.il, basic.cs: more tests for regalloc.
15626
15627 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15628
15629         * iltests.il: Some tests for register allocation modifications
15630         I have locally.
15631
15632 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
15633
15634         * exceptions.cs: Add regression test for bug #56782.
15635
15636         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
15637         original stack trace if an exception is rethrown. Fixes #56782. Oh,
15638         the beauty of fixing the same thing in 5 different files...
15639
15640 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
15641
15642         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
15643         methods.
15644
15645 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
15646
15647         * mini.c: Add support for STRWLPARRAY marshalling convention.
15648
15649 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
15650
15651         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
15652         to init the context to setup the regs pointer).
15653
15654 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15655
15656         * exceptions-ppc.c: more exceptions work.
15657
15658 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15659
15660         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
15661         not allowed.
15662
15663 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15664
15665         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
15666         can use the memory directly.
15667
15668         * cpu-pentium.md: Update documentation from a post from Zoltan. 
15669
15670         add x86_add_membase, x86_sub_membase, x86_mul_membase
15671
15672 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15673
15674         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
15675         GENERAL_REGS they were also hardcoded for all PPC ports.
15676
15677         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
15678
15679         Remove hard-coded limit for floating point registers, use
15680         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
15681
15682         Notice that in MacOS X calling conventions you can fit a lot more
15683         floating point values in registers, so I should update the PInvoke
15684         test to excercise the passing of floating point values on the
15685         stack (currently broken).
15686         
15687 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
15688
15689         * tramp-ppc.c (create_trampoline_code): Added
15690         JUMP_TRAMPOLINE_SIZE. 
15691         (ppc_magic_trampoline): Follow the pattern from
15692         x86_magic_trampoline: if code is set to zero, return. 
15693         (create_trampoline_code): Always pass MonoMethod to the jump
15694         trampoline, before it was passing a null.
15695         (mono_arch_create_jump_trampoline): Implement the jump stub, could
15696         share the code with mono_arch_create_jit_trampoline. 
15697
15698         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
15699         implemented.
15700         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
15701         implemented.  
15702
15703         * cpu-g4.md: Added length for jmp instruction, the worst case
15704         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
15705         for save_lmf).
15706
15707 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
15708
15709         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
15710
15711 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
15712
15713         * mini.c: Only set bblock->real_offset when adding a new bblock, and
15714         before each IL instruction.
15715
15716         * mini.c (CEE_BOX): Fix warnings.
15717
15718 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15719
15720         * mini.c: removed a few unused vars and extra whitespace.
15721
15722 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
15723
15724         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
15725         checks.
15726         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
15727         index.
15728         (OP_GETCHR): use the above
15729         (CEE_LDELEMA): use the above.
15730
15731         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
15732         version of the generic impl.
15733         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
15734         (CEE_LDELEMA): use the above.
15735
15736 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15737
15738         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
15739         Fixes #56317.
15740
15741         * iltests.il: Added new regression test for #56317.
15742
15743 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15744
15745         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
15746         under NetBSD. Fixes #56450.
15747
15748         * liveness.c (update_gen_kill_set): Fix previous patch.
15749
15750 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15751
15752         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
15753
15754 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
15755
15756         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
15757         ldsfld and ldsflda.
15758
15759         * inssel-sparc.brg: Add more optimizations.
15760
15761         * mini-sparc.c: Replace multiply/divide with shifts if possible.
15762
15763 2004-04-01  Martin Baulig  <martin@ximian.com>
15764
15765         * mini.c (handle_box): New static function; moved the
15766         implementation of CEE_BOX here.
15767         (mono_method_to_ir): Added `constrained_call' variable.
15768         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
15769         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
15770         mono_method_get_constrained() to get the method.
15771
15772 2004-04-01  Martin Baulig  <martin@ximian.com>
15773
15774         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
15775         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
15776         (mono_method_to_ir): We don't need these macros anymore since
15777         mono_class_get_full() already takes care of it. 
15778
15779 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15780
15781         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
15782         use @function (as doesn't accept #function here) and check the return
15783         value of system and stop if fails.
15784
15785 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15786
15787         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
15788
15789 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
15790
15791         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
15792
15793         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
15794
15795         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
15796         #56223.
15797
15798         * basic-long.cs: Add test for negation of Int64.MinValue.
15799
15800 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
15801
15802         * mini-sparc.c: Update status.
15803
15804         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
15805
15806         * exceptions-sparc.c: Fix return value in filters.
15807
15808         * inssel-sparc.brg: Fix register allocation in some rules.
15809
15810 2004-03-28  Martin Baulig  <martin@ximian.com>
15811
15812         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
15813         if neccessary.  
15814
15815 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
15816
15817         * mini-x86.c (mono_arch_patch_code): Fix warnings.
15818         
15819         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
15820         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
15821         remove unused conv_u4 opcode.
15822
15823         * mini-x86.c: Remove valgrind workaround since it slows down things
15824         even when mono is not run under valgrind.
15825
15826 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
15827
15828         * mini-sparc.c: Update status.
15829
15830         * inssel-sparc.brg: Add some optimizations.
15831
15832         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
15833         future delay slot filling. Add support for varargs, tail calls and JMP.
15834
15835         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
15836         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
15837
15838         * inssel.brg: Fix register allocation in OP_ARGLIST.
15839
15840         * inssel.brg: Fix warnings.
15841
15842 2004-03-25  Martin Baulig  <martin@ximian.com>
15843
15844         * mini.c (inflate_generic_field): Removed.
15845         (mini_get_method): Removed, use mono_get_method_full(),
15846         (mini_get_class): Removed, use mono_class_get_full().
15847         (mono_method_to_ir): Pass our generic context to
15848         mono_field_from_token().        
15849
15850 2004-03-25  Martin Baulig  <martin@ximian.com>
15851
15852         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
15853         of a `MonoMethod *'.
15854         (mini_get_method): Take a `MonoGenericContext *' instead
15855         of a `MonoMethod *'.
15856         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
15857         a new local variable called `generic_context' which holds the
15858         current `MonoGenericContext *'; use it to lookup things.
15859
15860 2004-03-24  Martin Baulig  <martin@ximian.com>
15861
15862         * mini.c (mini_get_class): New static method; if we're inside a
15863         generic instance, inflate the class if neccessary.
15864         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
15865
15866 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
15867
15868         * iltests.il: New regression test for #55976.
15869
15870         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
15871         #55976.
15872
15873 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15874
15875         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
15876         output.
15877
15878 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15879
15880         * liveness.c: Consider SSA stores as well as loads when making vars
15881         volatile.
15882
15883         * exceptions.cs: New regression tests for register allocation.
15884         
15885 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
15886
15887         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
15888         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
15889           domain lock only to protect puntual access to data structures.
15890           Added access lock for sighash, jit_icall_hash_name, 
15891           jit_icall_hash_addr and domain->code_mp.
15892
15893 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
15894
15895         * driver.c: Print SIGSEGV handling method.
15896
15897         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
15898
15899         * mini.c (setup_jit_tls_data): Handle case when this is called
15900         multiple times for a thread.
15901
15902         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
15903         is different from fbxx_un. Fixes #54303. Also use constants instead of
15904         magic numbers in a lot of places.
15905
15906 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
15907
15908         * exceptions.cs: Fix cctor test when --regression is used.
15909
15910 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
15911
15912         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
15913         for Linux/ppc.
15914
15915 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
15916
15917         * inssel-ppc.brg: fixed register assignments for some rules.
15918
15919 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15920
15921         * exceptions.cs: Add test for exceptions in static constructors.
15922
15923         * mini.c (mono_jit_compile_method_with_out): Move the calling of
15924         static constructors outside the domain lock. Fixes #55720.
15925
15926 2004-03-17  Martin Baulig  <martin@ximian.com>
15927
15928         * mini.c (get_generic_field_inst): Removed, this'll never happen.
15929         (inflate_generic_field): Take the `MonoMethod *' instead of the
15930         `MonoClass *' and added support for generic method.
15931         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
15932         have a `field->parent->gen_params', only inflate the field if it's
15933         an open constructed type.
15934
15935 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15936
15937         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
15938         exception object instead of the preconstructed ones.
15939
15940 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15941
15942         * mini.c: reverted changed to sigsegv_signal_handler commited
15943         accidentally in the previous patch.
15944
15945 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15946
15947         * mini.c:
15948         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
15949         running --aot with an old assembly.
15950
15951 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
15952
15953         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
15954         point values.
15955
15956         * mini-sparc.c: Add support for v9 branches with prediction.
15957
15958 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
15959
15960         * mini.c (mini_init): #warning is GNUC only
15961
15962         * mini-sparc.h: implement __builtin_frame_address
15963         and __builtin_return_address for Sun C compiler
15964
15965 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
15966
15967         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
15968
15969 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
15970
15971         * basic-calls.cs: Add test for unaligned byref long argument passing.
15972
15973         * mini-ops.h: Add sparcv9 compare and branch instructions.
15974
15975         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
15976         v9 instructions if we have a v9 cpu.
15977
15978         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
15979         registers for global allocation.
15980
15981         * exceptions-sparc.c: Fixes.
15982         
15983 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
15984
15985         * liveness.c (mono_analyze_liveness): Optimized version.
15986
15987         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
15988
15989         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
15990         sparc work.
15991
15992         * basic-float.cs basic-calls.cs: New regression tests.
15993
15994 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
15995
15996         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
15997         sigaltstack implementation.
15998
15999         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
16000         
16001         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
16002         stuff if SIGSEGV_ON_ALTSTACK is not defined.
16003
16004 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
16005
16006         * mini.c: Fix warnings.
16007         
16008         * mini.c (mono_resolve_patch_target): New function which contains the
16009         arch independent part of the patching process.
16010
16011         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
16012         patching code to a separate function.
16013
16014 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
16015
16016         * mini.c (add_signal_handler): ifdef out on Windows
16017
16018 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
16019
16020         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
16021         cpu-sparc.md: Add exception handling support + other fixes.
16022
16023         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
16024         typed GC detection in --version.
16025
16026         * basic.cs exceptions.cs: New regression tests.
16027
16028         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
16029         the arch specific code can store data during a compilation.
16030
16031         * mini-ops.h: Add OP_SETFRET.
16032
16033         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
16034         function, register a separate icall for each arity, so the icalls can
16035         get a wrapper.
16036         
16037         * mini.c (mono_print_tree): Print negative offsets in a more readable
16038         form.
16039         
16040         * mini.c: Make signal handling work on sparc.
16041         
16042         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
16043
16044         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
16045
16046         * jit-icalls.c: Emulate truncl by aintl on solaris.
16047
16048         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
16049
16050 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
16051
16052         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
16053
16054 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
16055
16056         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
16057         a MarshalByRef type, inline a method that performs the check, taking into
16058         account that the object can be a proxy. Also implemented tow new opcodes:
16059         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
16060         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
16061         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
16062
16063 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
16064
16065         * mini-ppc.c: if a relative branch displacement is too big
16066         but it points to and area reachable with an absolute branch, 
16067         avoid the thunks.
16068
16069 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
16070
16071         * mini.c: optimize small copies in cpblk.
16072
16073 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
16074
16075         * basic-calls.cs basic-float.cs: New regression tests.
16076
16077         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
16078         negative offsets from %fp. Implement localloc. Fix local register 
16079         allocation. Fix the case when the this argument needs to be saved to
16080         the stack. Implement some missing opcodes.
16081
16082 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
16083
16084         * mini.c (mini_method_compile): Reenable global regalloc in methods
16085         with exception handlers.
16086
16087         * linear-scan.c (mono_varlist_sort): Fix warning.
16088
16089         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
16090
16091         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
16092         regalloc costs.
16093
16094         * liveness.c: Make all variables uses in exception clauses volatile, to
16095         prevent them from being allocated to registers. Fixes #42136.
16096
16097 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
16098
16099         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
16100         causes regressions.
16101
16102         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
16103         argument to mono_arch_regalloc_cost.
16104
16105         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
16106         precisely.
16107
16108 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
16109
16110         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
16111         Make the cost of allocating a variable to a register arch dependent.
16112
16113         * basic-calls.cs: Fix compilation of tests.
16114         
16115         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
16116         helper function to cut back on the number of #ifdefs needed.
16117
16118         * mini-ppc.c: Fix compilation.
16119
16120         * basic-calls.cs: New regression tests.
16121
16122         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
16123
16124         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
16125         of l0 since that is callee saved.
16126
16127         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
16128         to virtual calls.
16129
16130         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
16131         of delay instruction.
16132
16133         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
16134
16135         * mini.h (MonoCallInst): Add 'virtual' flag.
16136
16137         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
16138
16139 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
16140
16141         * *.cs: New regression tests.
16142
16143         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
16144         work.
16145
16146         * mini.c (mono_runtime_install_handlers): Fix build.
16147
16148         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
16149         'signal_stack_size' members.
16150
16151         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
16152         alternate signal stack.
16153
16154         * exceptions-x86.c: Add stack overflow handling.
16155
16156         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
16157         functions to arch independent code.
16158
16159         * mini.c (mono_print_tree): Print more detailed info for load_membase
16160         opcodes.
16161         
16162 2004-02-23  Martin Baulig  <martin@ximian.com>
16163
16164         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
16165
16166 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
16167
16168         * mini-x86.c: fixed reg allocation for div/rem.
16169
16170 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
16171
16172         * driver.c (mono_main): Report some configuratio options on --version.
16173
16174 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
16175
16176         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
16177         low in the address space. Correctly flush memory in thunks where we
16178         output native code.
16179
16180 2004-02-20  Martin Baulig  <martin@ximian.com>
16181
16182         * mini.c (mini_get_method): New static method; inflate all generic
16183         methods and methods in open generic instances.
16184         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
16185         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
16186
16187 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
16188
16189         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
16190
16191         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
16192
16193 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
16194
16195         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
16196
16197         * mini-sparc.c (flushi mono_arch_output_basic_block): make
16198         it compile using Sun's compiler.
16199
16200 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
16201
16202         * 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.
16203
16204         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
16205
16206 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16207
16208         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
16209         code.
16210         * mini-ppc.c: handle calls outside of the allowed range with thunks
16211         allocated using the code manager.
16212         * tramp-ppc.c: use the code manager to hold generated native code.
16213         Fixed the magic trampoline to just patch vtable entries.
16214
16215 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
16216
16217         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
16218         independent file.
16219
16220 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
16221
16222         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
16223         PPC.
16224
16225         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
16226         if we have a working __thread implementation.
16227
16228         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
16229         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
16230
16231 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
16232
16233         * mini-x86.c: Fix compilation under gcc 2.
16234         
16235 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
16236
16237         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
16238         contains a call to the wrapped function.
16239
16240         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
16241         OP_<CALL>_IMM opcodes, and use them under X86.
16242         
16243         * mini.c (mono_jit_find_compiled_method): Fix warning.
16244
16245         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
16246
16247         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
16248
16249         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
16250         functionality to mini.c.
16251
16252         * mini.c (mono_create_jump_trampoline): New function to create a jump
16253         trampoline. Return a compiled method instead of a trampoline if it
16254         exists. Add a cache for jump trampolines.
16255
16256         * mini.c (mono_jit_find_compiled_method): New function to return a
16257         compiled method if it exists.
16258
16259         * mini-x86.c: Call mono_create_jump_trampoline instead of 
16260         mono_arch_create_jit_trampoline.
16261
16262         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
16263         a jump trampoline. Fixes #52092.
16264         
16265 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
16266
16267         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
16268         which is not up-to-date. Add check_corlib_version () instead.
16269
16270         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
16271         have to call it.
16272         
16273         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
16274         since newer valgrind versions do not need it.
16275
16276         * mini.c (mono_jit_compile_method_with_opt): New helper function to
16277         compile a method with a given set of optimizations.
16278
16279         * mini.c: Compile icall wrappers on-demand instead of at startup.
16280
16281         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
16282         wrapper for an icall.
16283
16284 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
16285
16286         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
16287         #54063.
16288
16289         * iltests.il: Add test for non-empty stack before switch instruction.
16290
16291 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
16292
16293         * mini.c: Add support for new stringbuilder marshalling conventions.
16294
16295         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
16296
16297 2004-02-01  Martin Baulig  <martin@ximian.com>
16298
16299         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
16300         in `ginst->mtype_argv'.
16301
16302 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
16303
16304         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
16305         facilitate grepping.
16306
16307 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
16308
16309         * mini.c: fixed buglet in initobj generic implementation for references.
16310
16311 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
16312
16313         * Makefile.am: make the version script conditional.
16314         * jit-icalls.c: handle missing truncl().
16315
16316 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
16317
16318         * exceptions.cs: Add more tests for double->int conversion.
16319
16320         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
16321         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
16322
16323 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
16324
16325         * driver.c: make --verbose --version emit an error
16326         if the loaded corlib doesn't match the runtime version.
16327
16328 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
16329
16330         * mini-ppc.h: export ppc_patch().
16331         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
16332         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
16333         on par or better than on MacOSX.
16334
16335 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
16336
16337         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
16338         mono_lookup_pinvoke_call.
16339
16340         * mini-x86.c: Under windows, the default pinvoke calling convention is
16341         stdcall. Fixes #52834.
16342
16343         * mini.c (optimize_branches): Add an upper bound to the number of
16344         iterations to prevent infinite loops on strange loops. Fixes #53003.
16345
16346 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
16347
16348         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
16349         and ISINST. Fixes #52093.
16350
16351         * objects.cs (test_0_vector_array_cast): New tests.
16352         
16353 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
16354
16355         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
16356         checking in Array.Set ().
16357
16358         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
16359         #52590.
16360
16361         * object.cs (test_0_multi_array_cast): New regression test.
16362
16363 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
16364
16365         * exceptions-ppc.c: fix build on Linux/PPC.
16366
16367 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
16368
16369         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
16370         running under valgrind.
16371         (x86_magic_trampoline): Fix build bustage.
16372
16373         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
16374         negative values as well. This is needed for the encoding of the line number
16375         info, since sometimes the line numbers are not in increasing order.
16376
16377 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
16378
16379         * cpu-pentium.md (localloc): Increase the size of the localloc 
16380         instruction since it is a loop under Win32.
16381
16382         * debug-mini.c (record_line_number): Get rid of unneccesary memory
16383         allocation.
16384
16385 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
16386
16387         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
16388         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
16389         Max Horn (max@quendi.de). Fix file names in comments.
16390
16391 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
16392
16393         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
16394         avoid stack overflow.
16395         (replace_usage): Avoid uninitialized variable warnings.
16396
16397         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
16398         and taking the address of valuetype variables.
16399
16400 2004-01-03  Patrik Torstensson
16401
16402         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
16403         for other purposes than FP later on.
16404
16405 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
16406
16407         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
16408         of tail calls.
16409
16410 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16411
16412         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
16413
16414 2003-12-30  Patrik Torstensson <p@rxc.se>
16415
16416         * mini-x86.h: Decreased number of availiable fp regs.
16417         Solves corner cases with FP spilling.
16418
16419 2003-12-23  Patrik Torstensson <p@rxc.se>
16420
16421         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
16422         for floating point stack tracking / spilling on x86. 
16423         Fixes bug #49012.
16424         
16425         * basic-float.cs: added float mul overflow test.
16426
16427 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
16428
16429         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
16430
16431 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16432
16433         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
16434         supports for cond branches that overflow the immediate
16435         overflow offset. mcs can compile simple programs.
16436
16437 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16438
16439         * exceptions-ppc.c: exception handling support wip:
16440         finally handlers get run on exception.
16441
16442 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
16443
16444         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
16445         profiling.
16446
16447 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16448
16449         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
16450         initial support for stack walking and unwinding.
16451
16452 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
16453
16454         * driver.c (mono_main): Make corlib-out-of-sync message more 
16455         descriptive. Also remove verify_corlib call.
16456
16457 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16458
16459         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
16460         not overlap with other call's arguments, too.
16461
16462 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
16463
16464         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
16465         move to arch-specific code the choice of arch-specific
16466         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
16467         * mini.c: ensure emulation calls will not interleave
16468         with other calls.
16469
16470 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
16471
16472         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
16473         the magic trampoline stack frame is dropped before executing
16474         the new method.
16475
16476 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
16477
16478         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
16479         and integer to fp conversions. Added support for overflowing
16480         arguments on the stack. Reserve a couple more registers as temps.
16481         Added support for aot compilation (as output still needs to be
16482         tweaked, though).
16483
16484 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16485
16486         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
16487         Don't overwrite return register in some corner cases.
16488
16489 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
16490
16491         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
16492         static constructors when AOT compiling.
16493
16494         * driver.c (mono_main): Call mono_check_corlib_version.
16495
16496 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16497
16498         * cpu-g4.md, basic.cs: fixed div target register.
16499
16500 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
16501
16502         * mini-ppc.c, basic.cs: shl_imm fix with test.
16503
16504 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16505
16506         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
16507         structures by value. Misc fixes.
16508         * objects.cs: more tests.
16509
16510 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
16511
16512         * mini-ppc.c: lconv.ovf.i implemented.
16513
16514 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16515
16516         * mini.c:
16517         (mini_init): don't error out if someone already called g_thread_init.
16518
16519 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16520
16521         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
16522         to be any type per the spec. Fix abnormal memory usage when
16523         the same object is repeatedly thrown.
16524
16525 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
16526
16527         * mini.c: check for overruns in IL code.
16528
16529 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
16530
16531         * TODO: Add/remove some todo entries.
16532
16533 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
16534
16535         * driver.c (mono_main): Call mono_verify_corlib.
16536
16537 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
16538
16539         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
16540         This has been moved to mini.c
16541         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
16542         type being casted is marshalbyref it could be a proxy, so instead of
16543         emitting the type check code, emit a call to a runtime method that will
16544         perform the check by calling CanCastTo if needed.
16545
16546 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
16547
16548         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
16549         methods with large stack frames under Win32.
16550
16551 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
16552
16553         * Makefile.am: Distribute regression tests.
16554
16555         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
16556         at the end instead of inserting each variable into the sorted list.
16557
16558         * linear-scan.c (mono_varlist_sort): New helper function.
16559         
16560 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16561
16562         * mini.c: ensure arguments and locals are within bounds.
16563
16564 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16565
16566         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
16567         related fixes.
16568
16569 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16570
16571         * mini.c (mono_cprop_copy_values): Fix crash.
16572
16573         * aot.c: Set verbosity back to 0.
16574         
16575 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16576
16577         * regalloc.c: complete memory leak fix by Laurent Morichetti
16578         (l_m@pacbell.net).
16579
16580 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16581
16582         * driver.c (main_thread_handler): Revert the previous patch.
16583
16584         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
16585         under valgrind.
16586
16587         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
16588         memory from the memory pool.
16589
16590         * driver.c (main_thread_handler): Turn on all optimizations when
16591         --aot is used.
16592
16593         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
16594         an array for better performance.
16595
16596         * regalloc.c (mono_regstate_assign): Fix memory leak.
16597
16598         * debug-mini.c (mono_debug_serialize_debug_info): New function to
16599         serialize the debug info.
16600
16601         * debug-mini.c (mono_debug_add_aot_method): New function to load the
16602         debug info from the serialized representation.
16603
16604         * aot.c: Save debug info into the generated file and load it when 
16605         loading a method.
16606
16607         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
16608
16609 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16610
16611         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
16612         More FP-related fixes.
16613
16614 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
16615
16616         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
16617         and register allocation buglet. Hello world now runs.
16618
16619 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16620
16621         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
16622         * tramp-ppc.c: fixed class init trampoline.
16623         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
16624
16625 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16626
16627         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
16628         mini.c: more ppc changes/fixes.
16629
16630 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16631
16632         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
16633         Also optimize the case when the arguments are the same in the caller 
16634         and in the callee.
16635
16636         * iltests.il: Add tests for tail calls with valuetype arguments.
16637
16638 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16639
16640         * mini-ppc.c: fixes for struct return type.
16641
16642 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
16643
16644         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
16645         mono_spillvar_offset() to arch-specific code.
16646
16647 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
16648
16649         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
16650
16651 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16652
16653         * exceptions-x86.c: Fix stack space leaks.
16654         
16655         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
16656         registers from the lmf if the method has save_lmf set.
16657
16658 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
16659
16660         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
16661         of icall wrappers into InvokeInDomain, since these are now per-domain.
16662
16663 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
16664
16665         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
16666         make some opcode emulation and intrinsic ops enabled/disabled 
16667         according to the architecture. More fixes.
16668
16669 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
16670
16671         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
16672
16673 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16674
16675         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
16676         arch-specific handling for 'this' and struct return type to
16677         arch-specific code.
16678
16679 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16680
16681         * aot.c: prevent divide by zero error when reporting (it happened with
16682         Accessibility.dll).
16683
16684 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
16685
16686         * mini.h (inst_switch): Remove unused macro.
16687
16688 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16689
16690         * aot.c:
16691         (load_aot_module): free 'info->methods' and 'info' properly. No more
16692         "free(): invalid pointer blah" messages when you have an old aot
16693         compiled assembly.
16694
16695 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
16696
16697         * jit-icalls.c, mini.c: Added support for context static fields.
16698
16699 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16700
16701         * mini.c (mono_method_blittable): Methods which set LastError are not 
16702         blittable either. Fixes #51108.
16703         
16704 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16705
16706         * mini.c: flush icache.
16707         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
16708
16709 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16710
16711         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
16712
16713 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
16714
16715         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
16716         safe on IA32.
16717
16718         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
16719         vararg calls.
16720
16721         * inssel.brg (CEE_MKREFANY): Fix AOT case.
16722
16723 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
16724
16725         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
16726         instruction when the result is discarded.
16727
16728         * iltests.il (test_0_div_regalloc): New regression test.
16729
16730         * arrays.cs: Fix compilation error.
16731
16732 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
16733
16734         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
16735         float rules to inssel-x86.brg: sane architectures with FP registers
16736         don't need to implement these rules.
16737
16738 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16739
16740         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
16741
16742 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16743
16744         * mini.h, inssel-long32.brg: fixed endianess issues in int64
16745         implementation of 32 bit systems.
16746
16747 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16748
16749         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
16750         (Jeroen Zwartepoorte).
16751
16752 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
16753
16754         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
16755         the caller and the callee matches.
16756         
16757         * mini.c (mono_method_to_ir): Add comment.
16758
16759         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
16760         signbit is missing on some platforms.
16761
16762 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
16763
16764         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
16765
16766         * mini.c (setup_jit_tls_data): Call the new function.
16767         
16768         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
16769
16770         * mini-x86.c: Add experimental support for fast access to the lmf
16771         structure under NPTL/Linux 2.6.x.
16772
16773 2003-11-06  Martin Baulig  <martin@ximian.com>
16774
16775         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
16776         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
16777         the debugger.
16778
16779 2003-11-02  Martin Baulig  <martin@ximian.com>
16780
16781         * mini.c (inflate_generic_field): New static method.
16782         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
16783         generic instance and the field is declared in a generic type, call
16784         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
16785
16786 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
16787
16788         * mini.h mini.c (mono_method_same_domain): New function to return
16789         whenever the caller and the callee are in the same domain.
16790
16791         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
16792
16793 2003-10-30  Martin Baulig  <martin@ximian.com>
16794
16795         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
16796         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
16797         method parameters.
16798         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
16799         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
16800
16801 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
16802
16803         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
16804         propagation.
16805
16806         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
16807         object here, so it is in the correct appdomain etc.
16808
16809 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
16810
16811         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
16812         already done.
16813         (mono_method_to_ir): Avoid freeing the type created returned from
16814         mono_type_create_from_typespec, since it is put into an internal cache
16815         by the function. Fixes pointer.exe.
16816
16817         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
16818         trampolines for icalls and pinvokes as well. Fixes #33569.
16819
16820 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
16821
16822         * mini.c: Update after appdomain changes.
16823
16824         * mini.c (mono_jit_compile_method_inner): Allways compile native
16825         method wrappers in the root domain, since there can only be one
16826         instance of them, whose address is stored in method->info.
16827
16828 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
16829
16830         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
16831         environment variable. Instead detect automatically whenever running
16832         under valgrind using the magic macro RUNNING_ON_VALGRIND from
16833         valgrind.h.
16834
16835 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
16836
16837         * trace.c, trace.h: New files that implement the new trace option
16838         parsing. 
16839
16840         * driver.c: Document new --trace options.
16841
16842         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
16843         mini-x86.c: Apply:
16844
16845         -       if (mono_jit_trace_calls)
16846         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
16847
16848         * mini.h: prototypes.
16849         
16850 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
16851
16852         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
16853
16854         * mini.c inssel.brg: Implement typedefbyref opcodes.
16855
16856         * mini.c (mono_jit_compile_method): Remove unused local variable.
16857
16858         * mini.c (mono_jit_compile_method_inner): Ditto.
16859         
16860 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
16861
16862         * tramp-x86.c (x86_class_init_trampoline): Fix build.
16863         
16864         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
16865
16866 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
16867
16868         * mini.c (mono_no_aot): Remove unused global variable.
16869
16870         * mini.c: Thread safety fixes.
16871
16872 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
16873
16874         * mini.c (mono_create_class_init_trampoline): Add a lock around
16875         class_init_hash_addr.
16876
16877         * arrays.cs (test_0_newarr_emulation): Add new regression test for
16878         #30073.
16879
16880         * mini.c: Decompose the NEWARR instruction before decomposing its
16881         arguments. Fixes #30073.
16882
16883 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
16884
16885         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
16886         convention.
16887
16888 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
16889
16890         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
16891
16892         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
16893
16894         * driver.c: Add support for compiling icall wrappers to --compile.
16895
16896 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
16897
16898         * inssel.brg: The empty value in class->interface_offsets is -1, not
16899         0. Fixes #49287.
16900
16901 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
16902
16903         * objects.cs: New test for 'is' operator on an array of interfaces.
16904
16905 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
16906
16907         * tramp-ppc.c: update trampoline code to support jumps
16908         and class initialization.
16909
16910 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
16911
16912         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
16913
16914         * inssel.brg (OP_UNBOXCAST): Fix #46027.
16915
16916         * inssel.brg (OP_UNBOX): Remove unused rule.
16917
16918         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
16919         region instead of one for each method. Fixes #47813.
16920
16921 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
16922
16923         * exceptions.cs (test_0_nested_finally): New regression test for
16924         nested exception handlers.
16925
16926         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
16927
16928         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
16929
16930         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
16931         inlining.
16932
16933         * mini.c (mono_method_check_inlining): Make the inlining limit 
16934         configurable by an environment variable.
16935         
16936         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
16937
16938         * mini.h: Bump AOT file version.
16939
16940         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
16941         token, store the image along with the token, since the token might not 
16942         refer to the same image as the method containing the relocation, 
16943         because of inlining.
16944
16945 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
16946
16947         * mini.c (mono_precompile_assemblies): New function to compile
16948         all methods in all loaded assemblies.
16949
16950         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
16951
16952         * regalloc.h regalloc.c (MonoRegState): Change the type of 
16953         iassign and fassign to int*, since they can contain large negative
16954         values if the register is spilled. Also added some comments. Fixes
16955         #45817.
16956
16957         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
16958         under Win32. Fixes #42964.
16959
16960 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
16961
16962         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
16963
16964         * aot.c: Added support for AOT compiling methods which contain calls
16965         to wrappers. Currently, only remoting-invoke-with-check wrappers are
16966         handled.
16967         
16968         * driver.c (compile_all_methods): Run the compilation in a thread
16969         managed by mono. Fixes #44023.
16970
16971         * mini.c (mono_codegen): Print full method name in verbose output.
16972
16973         * mini-x86.c (mono_arch_patch_code): Fix warning.
16974         
16975         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
16976         jumps, since the method we are jumping to might be domain-specific.
16977
16978         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
16979
16980 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
16981
16982         * inssel.brg: string chars are unsigned.
16983
16984 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
16985
16986         * TODO: New todo item.
16987
16988         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
16989         which calls mono_runtime_class_init and patches the call site to
16990         avoid further calls.
16991         (mono_arch_create_class_init_trampoline): New arch specific function 
16992         to create a class init trampoline.
16993         (create_trampoline_code): Generalized so it can create
16994         class init trampolines as well.
16995
16996         * mini.c (helper_sig_class_init_trampoline): New helper variable.
16997         (mono_create_class_init_trampoline): New function to create and cache
16998         class init trampolines.
16999         (mono_find_class_init_trampoline_by_addr): New function to lookup the
17000         vtable given the address of a class init trampoline. Used by the
17001         patching process.
17002         (mono_codegen): Generate a call to a trampoline instead of
17003         mono_runtime_class_init in LDSFLD[A].
17004         (mono_codegen): Add relocations for the new trampoline.
17005         
17006         * mini.h mini-x86.c aot.c: Added a new relocation type: 
17007         MONO_PATCH_INFO_CLASS_INIT.
17008
17009         * mini.h: Bump AOT version number.
17010
17011         * aot.c: Create a copy of the loaded code instead of using the original
17012         so methods which call each other will be close in memory, improving
17013         cache behaviour.
17014         
17015         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
17016         patch since it breaks the regression tests.
17017         
17018         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
17019         for the register saving instruction sequence since the 
17020         frame_state_for function in glibc 2.3.2 don't seem to detect it.
17021
17022 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
17023
17024         * TODO: Fix todo item && remove another.
17025
17026 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
17027
17028         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
17029         previous checkin.
17030
17031         * aot.c: Moved the check for MONO_LASTAOT into the initialization
17032         function of the module.
17033
17034         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
17035         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
17036         --no-aot command line option.
17037
17038 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
17039
17040         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
17041         by Bernie Solomon (bernard@ugsolutions.com).
17042
17043         * inssel.brg: Refactor the interface offset table related code into
17044         its separate functions and add support for the AOT case.
17045
17046 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
17047
17048         * aot.c (mono_aot_get_method_inner): Fix memory leak.
17049         
17050         * aot.c: Added mono_aot_verbose variable and made all debugging
17051         output depend on the value of this variable.
17052
17053         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
17054         method_label and info_label.
17055
17056         * mini.h mini-x86.c aot.c: Added a new relocation type 
17057         MONO_PATCH_INFO_IID for klass->interface_id.
17058
17059         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
17060         the MonoJitInfo structure.
17061
17062         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
17063         a non-root appdomain in shared mode.
17064
17065 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17066
17067         * aot.c: make aot loader less verbose. Remove free of unused variable.
17068
17069 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
17070
17071         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
17072
17073         * .cvsignore: Added *.dll.
17074
17075         * mini.c (mono_print_tree_nl): New function callable while debugging.
17076
17077         * mini.c (mono_print_code): Export this.
17078
17079         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
17080         patched code.
17081
17082 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
17083
17084         * mini.h (MonoCompile): Added 'jit_info' field.
17085
17086         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
17087         the cfg structure, since it is needed by the AOT compiler.
17088
17089         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
17090
17091         * aot.c: A major rewrite. Changes include:
17092         - save exception tables for methods which have them.
17093         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
17094         to g_module_symbol.
17095         - reworked the file format so it is now much smaller and needs
17096         fewer relocation entries.
17097         
17098 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
17099
17100         * aot.c (load_aot_module): Fix build bustage on platforms without
17101         Boehm GC.
17102
17103 2003-09-04  Martin Baulig  <martin@ximian.com>
17104
17105         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
17106
17107 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
17108
17109         * TODO: Some new optimization ideas.
17110
17111         * aot.c: Move AOT module loading logic here from mono_assembly_open.
17112
17113         * aot.c: Save the optimization flags used to compile the code into
17114         the AOT module.
17115
17116         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
17117         support emitting domain specific code.
17118         
17119         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
17120         no longer domain neutral. It can be made domain neutral by compiling 
17121         with --optimize=shared.
17122
17123         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
17124         between appdomains.
17125
17126         * driver.c mini.h mini.c: New --no-aot debugging option which disables
17127         loading of AOT code.
17128
17129         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
17130         
17131         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
17132         if there is no domain neutrality information.
17133
17134 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
17135
17136         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
17137         format version into the generated library.
17138
17139         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
17140         callee method into the caller since one of them could be shared.
17141
17142         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
17143         system exceptions from AOT code now works.
17144
17145         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
17146         method if it is domain neutral and the callee is not.
17147
17148         * graph.c (cfg_emit_one_loop_level): Fix warning.
17149
17150 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
17151
17152         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
17153         last checkin.
17154
17155 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
17156
17157         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
17158         is needed  by code which is executed before mono_runtime_init ().
17159         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
17160         
17161         * mini.c (mono_thread_abort): Fix warning.
17162         (mono_jit_compile_method): Call static constructor in the AOT case too.
17163
17164         * aot.c (mono_compile_assembly): Fix warning.
17165
17166 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17167
17168         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
17169
17170 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
17171
17172         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
17173
17174         * cpu-pentium.md: Fix the length of call opcodes so they include the
17175         ESP restoring instruction. Fixes #47968.
17176
17177 2003-08-28  Martin Baulig  <martin@ximian.com>
17178
17179         * mini-x86.c (mono_arch_call_opcode): Added support for
17180         MONO_TYPE_GENERICINST.
17181
17182         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
17183
17184 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
17185
17186         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
17187         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
17188
17189         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
17190         metadata_section.
17191
17192 2003-08-26  Martin Baulig  <martin@ximian.com>
17193
17194         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
17195         when reporting an error, set this to the actual error location.
17196         (mono_method_to_ir): Report the correct error location if
17197         get_basic_blocks() returned an error.
17198
17199 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
17200
17201         * mini.c (mono_type_blittable): OBJECT is not blittable.
17202         (mono_method_blittable): Methods which have marshalling descriptors
17203         are not blittable either. Fixes #47842.
17204
17205 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
17206
17207         * driver.c mini.c: Use an environment variable instead of a global 
17208         variable. Also fix the build.
17209
17210         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
17211         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
17212         reporting this. 
17213
17214         * driver.c mini.c: Added --with-valgrind option to turn off some
17215         code which prevents mono from running under valgrind.
17216
17217         * mini.c (mono_emit_call_args): Fixed warning.
17218
17219         * mini.c (mono_emulate_opcode): Fixed warning.
17220
17221 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17222
17223         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
17224         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
17225         regalloc.c, regalloc.h: specify available registers in arch-specific
17226         code and support floats in the regallocator (patch by Laurent Morichetti 
17227         <l_m@pacbell.net>)
17228
17229 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17230
17231         * mini.c: mono_thread_current() can be called only after
17232         mono_runtime_init(): rearrange code to not call it early on.
17233
17234 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17235
17236         * mini.c: allocate jump tables in the code mempools.
17237
17238 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17239
17240         * mini.c, mini.h: make sure per-thread data allocated by the jit is
17241         freed.
17242
17243 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
17244
17245         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
17246         12 to 16.  This fixes bug #47453.
17247
17248
17249 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
17250
17251         * mini-ppc.c: fixed indexed load and unsigned compares.
17252
17253 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
17254
17255         * mini.c: reenabled installation of handler for
17256           thread abort signal.
17257
17258 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17259
17260         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
17261         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
17262         until it's fixed and actually useful.
17263
17264 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17265
17266         * inssel-long32.brg: couple more opcodes implemented.
17267
17268 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
17269         
17270         * mini-sparc.c: Even more opcodes implemeted.
17271
17272 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
17273
17274         * mini-sparc.c: More opcodes implemented.
17275
17276 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
17277
17278         * mini-sparc.c: More opcodes implemented.
17279
17280 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
17281
17282         * inssel-sparc.brg: Add some needed rules.  Direct
17283         copy from PPC.
17284         * Makefile.am: Use inssel-sparc.brg
17285         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
17286         an assert happy for now.
17287
17288 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
17289
17290         * mini-sparc.c: Fixed compile errors.
17291         * exceptions-sparc.c: Same.  We now produce a mono binary 
17292         on sparc-linux.  Yea.
17293
17294 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
17295
17296         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
17297         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
17298         They compile, but do not work.
17299
17300 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17301
17302         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
17303         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
17304         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
17305         (ct@gentoo.org).
17306
17307 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17308
17309         * mini.c: more opcodes implemented and better support for generics.
17310
17311 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17312
17313         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
17314         * mini.c, mini.h: first cut at generics support: some new instructions 
17315         added and changed the behaviour of some of the existing ones.
17316
17317 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
17318
17319         * mini.c: Removed definition of metadata_shared mutex here.
17320
17321 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17322
17323         * mini-x86.c: make vararg calls work for instance methods.
17324
17325 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
17326
17327         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
17328         returns the arguments in a separte list, now.
17329
17330 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17331
17332         * aot.c, mini.c: updates for array type representation changes.
17333
17334 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
17335
17336         * mini.c: register function to perform jit shutdown.
17337
17338 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17339
17340         * mini.c: use a faster allocator if possible.
17341
17342 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17343
17344         * aot.c: some cleanups and portability changes.
17345
17346 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17347
17348         * mini.c: use faster allocation for CEE_BOX if possible.
17349
17350 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17351
17352         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
17353         Moved inlined mempcy code to its own function so that is can be
17354         reused. Added an inline memset function as well (optimized initobj).
17355         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
17356
17357 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17358
17359         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
17360
17361 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
17362
17363         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
17364         arch code can setup the cpu for CLR execution, if needed.
17365         We use it on x86 to set the precision of FP operations.
17366
17367 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
17368
17369         * mini.c: disable some optimizations if we can guess they'll cost too
17370         much for a given method.
17371
17372 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17373
17374         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
17375         
17376 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17377         * mini.h mini.c mini-x86.c: Added instruction level coverage 
17378         info collection support.
17379
17380 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17381
17382         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
17383         is now implemented in the profiling API. Get rid of a couple of
17384         unnecessary global variables.
17385
17386 2003-06-15  Nick Drochak <ndrochak@gol.com>
17387
17388         * basic-long.cs: tests for negative values for bigmul, and unsigned.
17389         * cpu-g4.md: add op_bigmul and op_bigmul_un
17390         * cpu_pentium.md: add op_bigmul_un
17391         * inssel-long32.brg: add rule for unsigned bigmul
17392         * mini-ops.h: define OP_BIGMUL_UN
17393         * mini-x86.c: THE BUG: handle (un)signed properly
17394         * mini.c: choose unsigned opcode if needed.
17395         This set of patches fixes bug #44291
17396
17397 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
17398
17399         * mini.c (optimize_branches): improved to handle all kinds of
17400         conditional branches.
17401
17402 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17403
17404         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
17405         don't raise exceptions.
17406
17407 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17408
17409         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
17410         to arch-specific files.
17411
17412 2003-06-09  Martin Baulig  <martin@ximian.com>
17413
17414         * Makefile.am (libs): Added $(LIBGC_LIBS).
17415
17416 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
17417
17418         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
17419         and OP_ATAN (fixes bug#44293).
17420
17421 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
17422
17423         * Makefile.am, mini-x86.c: rename cpu description array to
17424         pentium_desc, since some compilers define the 'pentium' preprocessor
17425         symbol.
17426
17427 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
17428
17429         * mini.c (mini_select_instructions): add explicit branch if the
17430         following block is not the false target of a conditional branch -
17431         we need this with any optimization that reorder or remove bblocks
17432
17433         * mini.c (optimize_branches): bug fixes
17434
17435 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
17436
17437         * mini.c (mono_method_to_ir): inline static readonly fields
17438
17439         * ssa.c (fold_tree): start cfold support for long (very simple
17440         cases only)
17441
17442         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
17443
17444 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17445
17446         * inssel.brg: fixed memcpy (bug #44219).
17447
17448 2003-06-05  Dick Porter  <dick@ximian.com>
17449
17450         * driver.c: Set the glib log levels to not abort if g_message
17451         recurses.
17452
17453         g_set_prgname() has to happen before mini_init() so that the
17454         process handle gets the info.
17455         
17456 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17457
17458         * driver.c: add intrins to the default optimizations to get wider
17459         exposure.
17460
17461 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17462
17463         * mini.h: some large basic blocks will overflow a 16-bit
17464         integers for symbolic registers.
17465
17466 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17467
17468         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
17469         (mono_arch_output_basic_block): fix bug 43499 
17470
17471 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17472
17473         * mini.c: kill duplicated definition of mono_debug_format.
17474
17475 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
17476
17477         * mini-x86.c, arrays.cs: fixed register allocation bug.
17478
17479 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17480
17481         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
17482
17483         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
17484
17485 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17486
17487         * mini.c:
17488         (print_method_from_ip): also print source location information if
17489         available.
17490
17491 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
17492
17493         * mini.c (mono_find_block_region): bug fix in region code
17494         (mini_method_compile): enable removing unreachable code again, but
17495         only in methods without exception clauses.
17496
17497 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17498
17499         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
17500         Implemented arglist opcode and handling of TypedReference type.
17501         Fixed x86 call convention when a structure is returned.
17502         Minimal support for calling static vararg methods.
17503
17504 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
17505
17506         * mini.c (mini_method_compile):  always remove unreachable code,
17507         because the code in them may be inconsistent  (access to dead
17508         variables for example).
17509
17510 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17511
17512         * driver.c, debug-mini.c: warning fixes.
17513
17514 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
17515
17516         * Makefile.am, jit.h, mini.h: install header for embedding mono.
17517
17518 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
17519
17520         * mini.c: thread-static fields are registered in mono_class_vtable(),
17521         so ensure the function is called before checking for them.
17522
17523 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
17524
17525         * mini.c (optimize_branches): fix for bug 43586
17526
17527         * jit-icalls.c (mono_llmult_ovf): added an additional check for
17528         overflow (fixes Bug #43639)
17529
17530 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17531
17532         * mini.c, objects.cs: allow the use of stobj for primitive types.
17533
17534 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17535
17536         * mini.c: be less strict about argument checking until we support
17537         running the verifier.
17538
17539 2003-05-27  Nick Drochak <ndrochak@gol.com>
17540
17541         * basic-long.cs: tests for (ulong)int * (ulong)int also
17542         * mini.c: use the same trick for (ulong)int * (ulong)int
17543
17544 2003-05-27  Nick Drochak <ndrochak@gol.com>
17545
17546         * basic-long.cs: add regression test for (long)int * (long)int
17547         * cpu-pentium.md: add op_bigmul specification
17548         * inssel-long32.brg: add OP_BIGMUL rule
17549         * mini-ops.h: add OP_BIGMUL
17550         * mini-x86.c: register allocator: handle case where src1 needs to be
17551         in EAX.
17552         * mini.c: substitute special BIGMUL opcode in the tree for 
17553         (long)int * (long)int
17554
17555 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
17556
17557         * jit-icalls.c: call the type ctor on field access if needed.
17558
17559 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17560
17561         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
17562         to a method (including results of ldelema, bug#43207).
17563
17564 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
17565
17566         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
17567         colors to show exception handler blocks.
17568
17569         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
17570         (fix for pinvoke7.cs).
17571
17572 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17573
17574         * mini.h, mini.c: ensure correct initialization order for types that
17575         require it. Prepare for lazy compilation of jit icall wrappers.
17576         Provide a name for opcode emulation to reduce unneeded mallocing.
17577
17578 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
17579
17580         * mini-x86.c: better register restoring code and profiling
17581         support for tail calls.
17582
17583 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17584
17585         * mini.h, driver.c: prepare for leaf methods optimization.
17586
17587 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17588
17589         * mini.c: get targets of branches before converting a method.
17590
17591 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
17592
17593         * mini.c (optimize_branches): added some experimental code (disbaled) 
17594
17595 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
17596
17597         * mini.c (optimize_branches): fix branch to branch optimization 
17598
17599         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
17600
17601         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
17602
17603         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
17604
17605         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
17606         if needed.
17607
17608 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
17609
17610         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
17611         enable use of interface variables again.
17612
17613         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
17614         I1 to registers because there is no simply way to sign extend 8bit
17615         quantities in caller saved registers on x86.
17616
17617         * inssel-float.brg: set costs of some rules to 2 so
17618         that monobure always select the arch. specific ones if supplied,
17619         regardless of the order we pass the files to monoburg.
17620
17621 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17622
17623         * mini.c, mini-x86.c: since the magic trampoline for jumps
17624         can't patch the code directly, we do it as soon as the
17625         method gets compiled.
17626
17627 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17628
17629         * mini-x86.c, mini.h: introduce a new patching method
17630         to support CEE_JMP and tail calls.
17631         * mini.c: obey tail.call. Don't precompile methods target
17632         of CEE_JMP.
17633         * tramp-x86.c: new trampoline code to handle methods
17634         reached through a jump.
17635
17636 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
17637
17638         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
17639         bit values to registers
17640
17641 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
17642
17643         * mini.c (mono_compile_get_interface_var): share interface
17644         variables if possible.
17645
17646 2003-05-16  Martin Baulig  <martin@ximian.com>
17647
17648         * debug-mini.c (mono_init_debugger): New function to initialize
17649         the debugger.  This is not in the debugger since it needs to
17650         access some of mini's internals.
17651
17652 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17653
17654         * mini.c (mono_method_to_ir): inlining fixes/cleanups
17655
17656 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
17657
17658         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
17659         for value type handling.
17660
17661 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17662
17663         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
17664         (mono_method_check_inlining): enable inlining of all kinds of wrappers
17665
17666 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
17667
17668         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
17669           the constructor through a proxy.
17670
17671 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17672
17673         * jit-icalls.c, inssel.brg: fixes to array element address
17674         calculations.
17675
17676 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
17677
17678         * mini-x86.c (is_regsize_var): allocate pointer to registers
17679
17680 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17681
17682         * driver.c: fixed typo, added intrins to the set of optimizations
17683         tested with regressions.
17684
17685 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
17686
17687         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
17688         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
17689         test case.
17690
17691 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
17692
17693         * inssel.brg: remove some common pop instructions without side effects
17694
17695 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17696
17697         * inssel-x86.brg: fixed thinko in int to double conversions.
17698
17699 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
17700
17701         * mini.c, jit-icalls.c: added runtime thread-static variable support.
17702
17703 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17704
17705         * inssel-long32.brg: two more missing instructions.
17706
17707 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
17708
17709         * mini.c (mono_emit_call_args): set the cil_code for all arguments
17710         if not already set.
17711
17712 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
17713
17714         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
17715         correctly.
17716
17717         * basic-float.cs: Added tests for negative zero.
17718
17719 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17720
17721         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
17722         a couple of missing operations for long casts, with test cases.
17723
17724 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17725
17726         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
17727
17728 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
17729
17730         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
17731         code size estimation.
17732
17733 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
17734
17735         * mini.c (mono_jit_create_remoting_trampoline): make it work with
17736         abstract methods (fix bug 42542)
17737
17738         * aot.c: add ability to handle array types
17739         
17740 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
17741
17742         * mini.c: Call the _specific versions of the object allocation
17743         functions if possible.
17744
17745 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17746
17747         * driver.c: call setlocale ().
17748
17749 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17750
17751         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
17752         windows build.
17753
17754 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
17755
17756         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
17757
17758         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
17759         wrappers (fix bug 42122)
17760
17761 2003-05-04  Martin Baulig  <martin@ximian.com>
17762
17763         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
17764
17765         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
17766         s/mini_set_defaults/mono_set_defaults/g.
17767
17768 2003-05-04  Martin Baulig  <martin@ximian.com>
17769
17770         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
17771
17772 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17773
17774         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
17775         (reported by Don Roberts).
17776
17777 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17778
17779         * mini.c: temporarily work around two bugs for this release.
17780
17781 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17782
17783         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
17784         that contains -export-dynamic and it makes using the ld script
17785         useless.
17786         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
17787
17788 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17789
17790         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
17791         specific cpu.
17792
17793 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17794
17795         * mini.c: make sure leave calls all the needed finally blocks,
17796         even when the target jumps out of multiple exception clauses.
17797
17798 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17799
17800         * ldscript, Makefile.am: add linker script to reduce the number of
17801         exported symbols (should also fix the issues with libwine defining
17802         some of the same symbols in io-layer).
17803
17804 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
17805
17806         * driver.c (mini_main): Avoid assertion when no file name is given on 
17807         the command line.
17808
17809 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
17810
17811         * driver.c: added --version/-V command line option.
17812         Added the inline optimization in the regression tests.
17813
17814 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17815
17816         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
17817         to the type in the method signature (fixes bug#42134).
17818
17819 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
17820
17821         * mini.c: when inlining, check this is not null only when needed (bug #42135).
17822
17823 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
17824
17825         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
17826
17827 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17828
17829         * driver.c: fixed bug #42100.
17830
17831 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
17832
17833         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
17834
17835 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17836
17837         * mini.c: moved most of the code required to do inlining to its own
17838         function so it can be reused. Inline also ctors if appropriate.
17839
17840 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
17841
17842         * Makefile.am: Link with -export-dynamic so shared libs loaded by
17843         the runtime can call mono API functions.
17844
17845 2003-04-27  Martin Baulig  <martin@ximian.com>
17846
17847         * debug-mini.c (mono_debug_init_method): Added
17848         `guint32 breakpoint_id' argument; if the method has a breakpoint,
17849         send a notification to the debugger.
17850
17851         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
17852         running in the Mono Debugger, just pass the breakpoint number to
17853         mono_debug_init_method().
17854
17855         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
17856
17857 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
17858
17859         * mini.c: allow some more unsafe compares.
17860
17861 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17862
17863         * mini-x86.c, Makefile.am: make distcheck works (partially from
17864         a patch by Richard Lee <r.h.lee@attbi.com>).
17865         * regset.c, regset.h: removed, they are unused.
17866
17867 2003-04-25  Dick Porter  <dick@ximian.com>
17868
17869         * driver.c: Usage reports the name as 'mono' not 'mini'
17870         * exceptions-x86.c: Build and run on freebsd
17871
17872 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
17873
17874         * Makefile.am: install the program with the 'mono' name and
17875         the library as libmono instead of mini and libmini.
17876
17877 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17878
17879         * driver.c: provide the APIs for the embedding interface of the old jit.
17880
17881 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
17882
17883         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
17884
17885 2003-04-23  Martin Baulig  <martin@ximian.com>
17886
17887         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
17888
17889         * driver.c: Added `--debug' command line argument to enable
17890         debugging support.
17891
17892 2003-04-23  Martin Baulig  <martin@ximian.com>
17893
17894         * debug.[ch]: Removed.  The code is now in
17895         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
17896
17897         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
17898         last six months.
17899
17900 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
17901
17902         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
17903
17904 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17905
17906         * mini.c:
17907         (mini_cleanup): moved mono_runtime_cleanup call after the call to
17908         mono_domain_finalize.
17909         (mini_method_compile): use mono_method_profile* if the the option is
17910         enabled.
17911
17912 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
17913
17914         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17915         methods with their wrapper.
17916
17917         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17918         methods with their wrapper.
17919
17920         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
17921         their wrapper.
17922
17923         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
17924         wrapper.
17925
17926         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
17927         methods.
17928
17929 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
17930
17931         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
17932
17933 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
17934
17935         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
17936         of the mempool. This is slightly faster and uses less memory
17937
17938 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17939
17940         * mini.c: avoid O(n) allocation for variables.
17941
17942 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17943
17944         * mini.c: handle items on the stack after inlining methods.
17945
17946 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17947
17948         * mini.c: make the method->opcode optimization dependent
17949         on MONO_OPT_INSTRINS and do it lazily.
17950
17951 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17952
17953         * driver.c: print overall results at the end of regression run.
17954
17955 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
17956
17957         * inssel.brg: don't overwrite symbolic registers.
17958
17959 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17960
17961         * inssel-x86.brg: fix conversion from long to float.
17962
17963 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
17964
17965         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
17966
17967 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
17968
17969         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
17970
17971         * driver.c: Added --print-vtable option as in the old JIT.
17972
17973 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17974
17975         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
17976
17977 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
17978
17979         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
17980
17981 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
17982
17983         * mini.c regalloc.c regalloc.h: Fix memory leak.
17984
17985 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
17986
17987         * aot.c (mono_aot_get_method): register all used strings
17988
17989 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17990
17991         * mini.c: always intern strings references with ldstr at compile time.
17992
17993 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17994
17995         * Makefile.am: add BUILT_SOURCES.
17996
17997 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17998
17999         * driver.c: give a better error message when the assembly to execute
18000         doesn't have an entry point.
18001
18002 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
18003
18004         * Makefile.am: added hack for automake
18005
18006         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
18007         correct sematics.
18008
18009         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
18010
18011 22003-04-07  Martin Baulig  <martin@ximian.com>
18012
18013         * Makefile.am: Added Makefile.am.
18014
18015         * debugger-main.c: Removed, this is now in the debugger where it
18016         belongs.
18017
18018         * mini.pc.in: Call this package `mini' for the moment.
18019
18020
18021
18022
18023
18024
18025
18026
18027
18028
18029
18030
18031
18032