2008-12-05 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2
3         * aot-compiler.c: Implement a few functions missing from the asm writer.
4         (emit_method_code): Only write symbols for methods when using the bin
5         writer, since the assembler can't deal with the characters in our method
6         names.
7
8         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
9
10         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
11         call.
12
13         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
14         a bit to also restore %rax.
15
16 2008-12-05  Mark Probst  <mark.probst@gmail.com>
17
18         * mini-ppc.c: Some simple merges from mini-ppc64.c.
19
20 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
21
22         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
23         arguments.
24
25 2008-12-05  Mark Probst  <mark.probst@gmail.com>
26
27         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
28
29         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
30         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
31
32         * exceptions-ppc64.c: Removed.
33
34         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
35
36 2008-12-05  Mark Probst  <mark.probst@gmail.com>
37
38         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
39         tramp-ppc64.c.
40
41         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
42
43         * tramp-ppc64.c: Removed.
44
45 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
46
47         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
48         the TYPESPEC table.
49
50 2008-12-05  Mark Probst  <mark.probst@gmail.com>
51
52         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
53
54         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
55         mini-ppc.h instead of mini-ppc64.h.
56
57         * mini-ppc64.h: Removed.
58
59 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
60
61         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
62         
63         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
64         
65 2008-12-05  Mark Probst  <mark.probst@gmail.com>
66
67         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
68         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
69         code easier.
70
71 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
72
73         * basic-simd.cs: Tests for operator == and != on Vector4f.
74
75 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
76
77         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
78
79         * simd-intrinsics.c: Kill useless enum.
80
81 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
82
83         * cpu-mips.md: add long_conv_to_ovf_i4_2
84         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
85
86 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
87
88         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
89         
90         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
91
92 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
93
94         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
95         
96 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
97
98         * basic-simd.cs: Add tests for new methods.
99
100 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
101
102         * simd-intrinsics.c: Add support for operator == and !=
103         on Vector4(u)i.
104
105         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
106
107 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
108
109         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
110
111 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
112
113         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
114
115         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
116         MONO_PATCH_INFO_ICALL_ADDR.
117
118         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
119
120         * aot-compiler.c: Resurrect full-aot support.
121
122 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
123
124         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
125         
126 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
127
128         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
129         
130 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
131
132         * basic-simd.cs: Fix tests to work under ppc.
133         Remove tests for methods that will be removed.
134
135 2008-12-03  Mark Probst  <mark.probst@gmail.com>
136
137         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
138         generic type (via a typedef or typeref) correctly.
139
140 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
141
142         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
143         diagnose an assertion failure.
144
145 2008-12-02  Mark Probst  <mark.probst@gmail.com>
146
147         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
148         Fix trampoline size.
149
150         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
151         conversion opcodes are implemented natively instead via emulation.
152
153 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
154
155         * cpu-mips.md: remove mips_xori
156
157         * mini-ops.h:  remove mips_xori
158
159         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
160
161         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
162         
163         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
164         
165 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
166
167         * cpu-mips.md: fix instruction lengths.
168
169         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
170
171         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
172
173         * mini-ops.h: fix slti / sltiu op profiles.
174         
175 2008-12-02  Martin Baulig  <martin@ximian.com>
176
177         * method-to-ir.c (mono_method_to_ir): Disable debugging
178         information for the init locals block to make the debugger stop
179         after all locals have been initalized.
180
181 2008-12-02  Martin Baulig  <martin@ximian.com>
182
183         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
184         running inside the debugger.
185
186 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
187
188         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
189         is enabled.
190
191         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
192         alu->alu imm optimization which only shows if deadce is disabled.
193
194         * aot-compiler.c: Rename the function names for the binary and asm writers
195         so they can coexist in the same process. Rework the xdebug code to use the
196         asm writer. This avoids the need to call into the runtime to dump the
197         debugging info. Add more debugging info for types.
198
199         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
200
201         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
202         cpu description tables, they can't occur in cpu-<ARCH>.md.
203
204         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
205         the stack in CEE_LDFLDA. Fixes #450542.
206
207         * generics.cs: Add a new test.
208
209 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
210
211         * mini-ops.h: updated MIPS opcodes
212         * mini-mips.c: decompose long opts
213         * mini-mips.h: decompose long opts
214         
215 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
216
217         * cpu-mips.md: fix length on int_rem_un
218         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
219         
220 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
221
222         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
223
224         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
225
226 2008-11-29  Martin Baulig  <martin@ximian.com>
227
228         * mini-exceptions.c (mono_handle_native_sigsegv): Check
229         mono_debug_using_mono_debugger() in addition to the
230         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
231
232 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
233
234         * mini-ops.h: updated more MIPS opcodes
235         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
236         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
237         
238 2008-11-28  Mark Probst  <mark.probst@gmail.com>
239
240         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
241
242 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
243
244         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
245         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
246         * mini-ops.h: correct selected mips opcode entries
247         
248 2008-11-28  Mark Probst  <mark.probst@gmail.com>
249
250         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
251         make them work.
252
253 2008-11-28  Mark Probst  <mark.probst@gmail.com>
254
255         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
256
257 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
258
259         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
260         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
261         * mini-mips.h: disable IMT
262         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
263         
264 2008-11-28  Mark Probst  <mark.probst@gmail.com>
265
266         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
267
268 2008-11-28  Mark Probst  <mark.probst@gmail.com>
269
270         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
271
272 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
273
274         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
275         consistency.
276
277 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
278
279         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
280         for Set/GetVector aligned versions.
281
282 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
283
284         * basic-simd.cs: Add tests for Get/SetVector.
285
286 2008-11-27  Mark Probst  <mark.probst@gmail.com>
287
288         * mini.c: Removed g_slist_append_mempool().  Now in
289         metadata/mempool.c.
290
291 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
292
293         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
294         size properly and make the bounds check optional.
295
296         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
297         for SetVector and IsAligned.
298
299 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
300
301         * mini.c: Remove unused mono_normalize_opcodes () function.
302
303 2008-11-26  Mark Probst  <mark.probst@gmail.com>
304
305         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
306         using the new atomic add ops now.
307
308         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
309         add.
310
311 2008-11-26  Mark Probst  <mark.probst@gmail.com>
312
313         * mini-ppc64.c: Several fixes.
314
315 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
316
317         * cpu-mips.md: added jump_table
318         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
319
320 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
321
322         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
323
324 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
325
326         * mini-ops.h: corrected a handful of MIPS opcodes.
327
328 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
329
330         * aot-compiler.c: MIPS to use ELF writer
331
332 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
333
334         * mini-codegen.c: remove MIPS specific assert.
335
336 2008-11-25  Mark Probst  <mark.probst@gmail.com>
337
338         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
339         fixes.  PPC64 now passes most of the runtime regressions.
340
341 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
342
343         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
344         volatile intervals a bit.
345
346 2008-11-24  Mark Probst  <mark.probst@gmail.com>
347
348         * basic-long.cs: New test case.
349
350 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
351
352         * mini.c (mini_method_compile): Disable globalra for large methods for 
353         now.
354
355         * regalloc2.c (order_moves): Add fp support.
356
357         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
358         source bblock ends with an OP_BR_REG.
359
360         * ratests.cs: Add a new test.
361
362 2008-11-23  Mark Probst  <mark.probst@gmail.com>
363
364         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
365         sharing.  PPC64 now passes generics.exe.
366
367 2008-11-23  Mark Probst  <mark.probst@gmail.com>
368
369         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
370
371 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
372
373         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
374         memory when mono_jit_info_table_find () can't find the method in the
375         LMF case.
376
377         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
378         AOTed code too.
379         
380         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
381         writer too.
382
383 2008-11-23  Mark Probst  <mark.probst@gmail.com>
384
385         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
386         Several fixes.  PPC64 now runs exceptions.exe and
387         devirtualization.exe.
388
389 2008-11-22  Mark Probst  <mark.probst@gmail.com>
390
391         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
392         arrays.exe and basic-math.exe.
393
394 2008-11-22  Mark Probst  <mark.probst@gmail.com>
395
396         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
397         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
398
399 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
400
401         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
402
403 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
404
405         * method-to-ir.c: Move bounds checking macros to ir-emit.h
406
407         * ir-emit.h: Move macros from method-to-ir.c to here.
408
409 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
410
411         * mini-ops.h: Correct the long simd ops to use LREG.
412
413 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
414
415         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
416         
417         * mini-ops.h: Correct the dreg type of a few long opcodes.
418
419         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
420         Add netbsd support.
421
422 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
423
424         * mini-ppc.c: remove negative stack references in epilog
425         for platforms that don't support the red zone.
426
427 2008-11-21  Mark Probst  <mark.probst@gmail.com>
428
429         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
430         point regs.  Now PPC64 passes basic-calls.exe.
431
432 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
433
434         * basic-simd.cs: Add tests for accessors of Vector2l.
435
436 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
437
438         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
439
440         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
441         
442         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
443
444 2008-11-21  Mark Probst  <mark.probst@gmail.com>
445
446         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
447         PPC64 passes basic-long.exe.
448
449 2008-11-20  Mark Probst  <mark.probst@gmail.com>
450
451         * decompose.c: Decompose carry and overflow add on PPC64 like on
452         other 64 bit archs.  Don't decompose sub at all on PPC64.
453
454         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
455         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
456         basic-long.exe.
457
458 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
459
460         * basic-simd.cs: Add tests for accessors of Vector2d.
461
462 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
463
464         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
465
466         * cpu-x86.md: Same.
467
468         * mini-x86.c (mono_arch_output_basic_block): Same.
469         
470         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
471
472 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
473
474         * basic-simd.cs: Add tests for accessors of Vector4f.
475
476 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
477
478         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
479
480         * cpu-x86.md: Same.
481
482         * mini-x86.c (mono_arch_output_basic_block): Same.
483         
484         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
485
486 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
487
488         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
489
490 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
491
492         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
493
494         * cpu-x86.md: Same.
495
496         * mini-x86.c (mono_arch_output_basic_block): Same.
497         
498         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
499
500 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
501
502         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
503
504 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
505
506         * simd-intrinsics.c: Enable setters for Vector16sb.
507
508 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
509
510         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
511
512         * cpu-x86.md: Same.
513
514         * mini-x86.c (mono_arch_output_basic_block): Same.
515         
516         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
517
518 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
519
520         * simd-intrinsics.c: Implement setter for Vector8us.
521
522 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
523
524         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
525         for dead variables.
526
527 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
528
529         * mini-ppc.c: remove references to the red zone in the prolog
530         (for systems that don't support it).
531
532 2008-11-19  Mark Probst  <mark.probst@gmail.com>
533
534         * cpu-ppc64.md: Fixed a few instruction lengths.
535
536         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
537         now.
538
539 2008-11-19  Mark Probst  <mark.probst@gmail.com>
540
541         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
542         basic.exe now.
543
544 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
545
546         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
547
548 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
549
550         * mini-ops.h: Added OP_INSERT_I2.
551
552         * cpu-x86.md: Same.
553
554         * mini-x86.c (mono_arch_output_basic_block): Same.
555         
556         * simd-intrinsics.c: Implement setter for Vector8s.
557
558         * simd-methods.h: Add the names of get setters of Vector8s.
559
560 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
561
562         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
563         
564         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
565         parameters.
566
567         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
568
569 2008-11-18  Mark Probst  <mark.probst@gmail.com>
570
571         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
572         for PPC64.  An empty program runs now.
573
574 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
575
576         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
577
578         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
579         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
580         info for JITted code is emitted into a shared library, loadable into gdb.
581
582 2008-11-18  Mark Probst  <mark.probst@gmail.com>
583
584         * Makefile.am: Changes to build PPC64.
585
586         * mini-arch.h: Include mini-ppc64.h on PPC64.
587
588 2008-11-18  Mark Probst  <mark.probst@gmail.com>
589
590         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
591         in PPC code up to r119147.
592
593 2008-11-18  Mark Probst  <mark.probst@gmail.com>
594
595         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
596         cpu-ppc64.md: Changes for PPC64.
597
598         Based on code submitted by andreas.faerber@web.de at
599         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
600         X11/MIT license.
601
602 2008-11-18  Mark Probst  <mark.probst@gmail.com>
603
604         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
605         cpu-ppc64.md: Copied from the corresponding PPC files from
606         r118846.
607
608 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
609
610         * mini-ops.h: Added OP_ROUND.
611
612         * cpu-x86.md: Added round.
613
614         * mini-x86.c: Added support for intrinsicing Math.Round (double).
615
616         * basic-math.cs: Added test_0_round to test rounding.
617
618         Contributed under MIT/X11 license.
619
620 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
621
622         * aot-compiler.c : Fix the Winx64 build.
623
624         Contributed under MIT/X11 license.
625
626 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
627
628         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
629         in OP_EXTRACT_R8 to avoid possible stack corruption.
630
631 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
632
633         * mini-ops.h: Added OP_EXTRACT_R8/I8.
634
635         * cpu-x86.md: Added extract_r8.
636
637         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
638         
639         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
640         a couple of OP_EXTRACT_I4.
641
642         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
643
644         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
645
646 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
647
648         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
649         and not 4.1. 
650
651 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
652
653         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
654         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
655
656         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
657         are not needed any more.
658
659         * mini.h: Remove the unused INS_LIST macros.
660
661         * mini.c (mini_method_compile): Remove a disable globalra case which is no
662         longer needed.
663
664         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
665         ir-emit.h.
666
667         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
668         mono_alloc_ireg () instead.
669
670         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
671         macros.
672
673         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
674         on amd64.
675
676         * aot-runtime.c (load_aot_module): Disable AOT when running under
677         CAS.
678
679         * mini-amd64.h: Change the monitor fastpath defines to check for
680         !PLATFORM_WIN32 so they work on *bsd too.
681
682         * mini.h mini.c mini-hhpa.c: Remove more unused code.
683
684         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
685
686         * mini.h (MonoCompile): Remove new_ir flag.
687
688         * regalloc.h regalloc.c: Remove unused code.
689
690         * cpu-*.md: Remove more unused opcodes.
691
692         * simple-cee-ops.h simple-mini-ops.h: Removed.
693
694         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
695         
696 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
697
698         * aliasing.h: Removed.
699
700         * *.c: Remove references to aliasing.h and inssel.h.
701
702         * mini.c: Remove additional unused functions.
703
704         * mini-ops.h cpu-*.md: Remove unused opcodes.
705
706 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
707
708         Remove the old JIT code.
709
710         * inssel*.brg: Removed.
711
712         * ssa.c abcremoval.c aliasing.c: Removed.
713
714         * ssa2.c: Renamed to ssa.c.
715
716         * abcremoval2.c: Renamed to abcremoval.c.
717
718         * *.c: Removed all !cfg->new_ir code.
719
720         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
721         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
722
723         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
724         
725 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
726
727         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
728         to simplify the code and cut back on the number of global symbols in the AOT
729         file.
730         
731         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
732
733 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
734
735         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
736         with the got/got_info tables.
737
738         * mini.h: Bump AOT file format version.
739         
740         * unwind.h: New file, contains definitions for stack unwinding.
741
742         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
743         to cfg->unwind_ops.
744         
745         * aot-compiler.c: Generalize the emitting of unwind information to use the
746         information in cfg->unwind_ops.
747
748         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
749
750         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
751         AOT method frames. Enable writing symbols for methods by default.
752
753 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
754
755         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
756         and make it work with vectors of element sizes 1, 2 and 4.
757
758         * simd-intrinsics.c: Enable getter for all vectors with element size
759         1, 2 or 4.
760
761         * simd-methods.h: Add the names of other getters.
762
763         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
764
765         * cpu-x86.md: Same.
766
767         * mini-x86.c: Same.
768
769 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
770
771         * mini-ppc.h: portability fix.
772
773 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
774
775         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
776         buggy and will overwrite it.
777
778 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
779
780         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
781         Use it to emit local symbols for all methods so AOTed methods show up with
782         their full name in gdb/valgrind output.
783
784 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
785
786         * mini-ppc.c: portability fixes.
787
788 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
789
790         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
791         entries out of the if (!generic_shared...) code so it is always done.
792         (mono_class_init_trampoline): Do the patching when running under valgrind
793         too, newer versions of valgrind have no problems with it.
794
795 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
796
797         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
798         further sections.
799
800 2008-11-13  Mark Probst  <mark.probst@gmail.com>
801
802         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
803         filters.
804
805 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
806
807         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
808
809 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
810
811         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
812
813         * cpu-x86.md: Same.
814
815         * mini-x86.c: Same.
816
817         * simd-intrinsics.c: Same.
818
819 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
820
821         * simd-intrinsics.c: Enable constructor intrinsics for all types.
822
823 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
824
825         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
826         to work with more Vector types.
827
828 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
829
830         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
831         store the elemens directly instead of using and intermediate.
832
833 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
834
835         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
836
837         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
838         to preserve %eax for aot plt trampolines.
839
840         * aot-compiler.c (compile_method): Don't skip synchronized methods.
841         (encode_method_ref): Flag synchronized methods so they won't go through
842         the AOT trampoline.
843
844         * aot-compiler.c: Additional work to support AOTing synchronized methods/
845         wrappers.
846
847         * cpu-ia64.md (jmp): Increase max length.
848
849 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
850
851         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
852         open generic classes.
853
854         * aot-compiler.c: Enable the ELF writer on ELF platforms.
855
856         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
857         box+brtrue optimization since it causes test failures on x86.
858
859 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
860
861         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
862
863         * cpu-x86.md: Same.
864
865         * mini-x86.c: Same.
866
867         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
868         for simd ctor values. 
869
870         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
871         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
872
873 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
874
875         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
876         LogicalRightShift.
877
878         * simd-instrincs.c: Same.
879
880         * basic-simd.cs: Same.
881
882 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
883
884         * ratests.cs: Add more tests.
885
886         * regalloc2.c (add_spill_code): Handle more corner cases.
887
888 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
889
890         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
891         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
892         both the source an destination of an instruction.
893
894 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
895
896         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
897         wapihandles.c: more portability changes.
898
899 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
900
901         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
902         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
903         safe to execute in a signal handler and the kernel provides better
904         the info in /proc/self/smaps. Avoid the assert on sigaction during
905         cleanup.
906
907 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
908
909         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
910         do the bblock linking hack if it is actually needed.
911
912         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
913         up linking.
914
915         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
916         crash problem is fixed.
917
918         * branch-opts.c (mono_remove_critical_edges): Link up newly added
919         bblocks.
920
921         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
922         for catch clauses.
923         (mini_method_compile): Set the starting value of next_vreg to 
924         MAX_IREGS + MAX_FREGS when using globalra.
925
926         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
927         filter clauses with BB_EXCEPTION_HANDLER.
928
929         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
930
931 2008-11-10  Mark Probst  <mark.probst@gmail.com>
932
933         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
934         space for stdcall.  Fixes regressions on Win32.
935
936 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
937
938         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
939         bblocks.
940         (linear_scan): Remove an assert which doesn't seem to be needed.
941
942         * local-propagation.c (mono_local_deadce): Avoid a call to
943         MONO_DELETE_INS which would screw up the instruction linking.
944
945         * mini.c (mono_decompose_op_imm): Make this work with globalra.
946
947         * regalloc2.c: Upgrade to work the current JIT code.
948
949 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
950
951         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
952         case.
953
954         * aot-runtime.c: Remove some dead code.
955
956         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
957         consistency.
958         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
959
960         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
961         trampolines using sscanf since atoi doesn't work on large unsigned values.
962
963         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
964         Initialize code_size.
965
966 2008-11-08  Mark Probst  <mark.probst@gmail.com>
967
968         * method-to-ir.c (mini_emit_inst_for_method): Make
969         Interlocked.CompareExchange work for Int arguments on 32 bit
970         archs, as well.
971
972 2008-11-07  Mark Probst  <mark.probst@gmail.com>
973
974         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
975
976 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
977
978         * main.c Fix MSVC build.
979
980         Contributed under MIT/X11 license.
981
982 2008-11-06  Mark Probst  <mark.probst@gmail.com>
983
984         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
985         alignment larger than 8 bytes are aligned correctly, too.
986
987         * mini.c: Honor the min_align field of MonoClass when laying out
988         the stack.
989
990 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
991
992         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
993
994         * aot-compiler.c (emit_plt): Fix a warning.
995         
996         * aot-compiler.c: Implement ARM support in the binary writer.
997
998 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
999
1000         * basic-simd.cs: Add test for getter with byref arg.
1001         Fix the naming of a few tests.
1002         Add missing checks to a test.
1003
1004 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
1005
1006         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
1007
1008         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
1009         most of the full-aot support for monitor enter/exit trampolines.
1010
1011         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
1012         enter/exit trampoline creation functions.
1013
1014         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
1015         make dist.
1016
1017 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
1018
1019         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
1020         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
1021         implement the needed functionality without adding crap to the runtime.
1022
1023 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
1024
1025         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
1026         non-x86 builds.
1027
1028         * mini.c (mono_build_date): New global version holding the build date in
1029         string format.
1030         
1031         * Makefile.am (buildver.c): Generate a file containing the build date.
1032
1033         * main.c: Set the build date from the generated file.
1034
1035         * mini.c (mono_get_runtime_build_info): New helper function returning build
1036         information in a string format.
1037         
1038         * driver.c (mono_main): Print the build date in --version.
1039
1040         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
1041         file when the bind-to-runtime-version option is used.
1042
1043 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1044
1045         * simd-intrinsics.c: Fix bug when using getters and byref args. 
1046
1047 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1048
1049         * simd-methods.h: Rename prefetch methods.
1050
1051         * simd-intrinsics.c: Same.      
1052
1053 2008-11-05  Mark Probst  <mark.probst@gmail.com>
1054
1055         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
1056         sizes.
1057
1058 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * aot-compiler.c: Use the bundled elf header files instead of depending on
1061         the system one.
1062         
1063         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
1064         mempool.
1065
1066         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
1067         on every call.
1068
1069 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
1070
1071         * cpu-x86.md: Add store nta ops.
1072
1073         * mini-ops.h: Same.
1074
1075         * mini-x86.c: Same.
1076
1077         * mini.h: Add an enum for simd prefetch modes.
1078
1079         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
1080         of store. Use the changed code to support store nta.
1081
1082         * simd-intrinsics.c: Add prefetch ops for all vector types.
1083
1084 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1085
1086         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
1087         threads.
1088         
1089         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
1090         names.
1091
1092         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
1093         trampolines.
1094
1095 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1096
1097         * mini-x86.c: Fixed commit.
1098
1099 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1100
1101         * aot-compiler.c (emit_plt): Align the plt section only on x86.
1102
1103 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1104
1105         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
1106         and MONITOR_EXIT, for the ASM fastpaths.
1107
1108         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
1109         available.
1110
1111         * mini.c, patch-info.h: Signature and patch infos for
1112         Monitor.Enter/Exit trampolines.
1113
1114         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
1115
1116         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
1117         Monitor.Enter/Exit ASM fastpath for Linux.
1118
1119 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1120
1121         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
1122
1123         * objects.cs: Add a new test.
1124         
1125         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
1126
1127         * aot-runtime.c (load_method): Run class initialization in the PLT case even
1128         if MONO_LOG_LEVEL is set.
1129
1130         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
1131
1132         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
1133
1134         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
1135         
1136         * aot-compiler.c: Change the relocation code to use virtual addresses instead
1137         of file offsets. Align the sections belonging to the data segment to 
1138         PAGESIZE.
1139
1140 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
1141
1142         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
1143         elf.h. Port it to amd64.
1144
1145 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1146
1147         * driver.c: Enable SIMD by default.
1148
1149 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1150
1151         * cpu-x86.md: Add prefetch op.
1152
1153         * mini-ops.h: Same.
1154
1155         * mini-x86.c: Same.
1156
1157         * mini.h: Add an enum for simd prefetch modes.
1158
1159         * simd-methods.h: Add prefetch function names.
1160
1161         * simd-intrinsics.c: Add prefetch ops for all vector types.
1162
1163 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
1164
1165         * aot-compiler.c (emit_bytes): Speed this up a little.
1166
1167 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
1168
1169         * aot-compiler.c: Add JIT time etc. statistics.
1170         
1171         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
1172
1173         * mini.h (MonoCompile): Add 'got_offset' field.
1174
1175         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
1176         method_got_offsets array.
1177
1178         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
1179         wrappers.
1180
1181         * aot-compiler.c (compile_method): Add generic method instances referenced
1182         by the method to the list of methods to be compiled, this is required so if
1183         A<T> references B<T>, and another assembly references A<int>, then it will
1184         also get a copy of B<int>.
1185
1186         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
1187         when checking for monitor enter/exit.
1188
1189 2008-10-30  Mark Probst  <mark.probst@gmail.com>
1190
1191         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
1192         for Monitor.Enter and Monitor.Exit if enabled.
1193
1194         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
1195         Solaris.
1196
1197 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
1198
1199         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
1200         of an OP_MOVE. Fixes #440046.
1201
1202         * basic-long.cs: Add a new test.
1203
1204 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
1205
1206         * mini.h: Add synchronization note for the managed counter-part.
1207
1208         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
1209         returns the simd caps of the current cpu.
1210
1211 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
1212
1213         * basic-simd.cs: Remove Console.WriteLine.
1214
1215 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1216
1217         * basic-simd.cs: New tests for Vector2ul.
1218
1219 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1220
1221         * simd-intrinsics.c: Add new vector type Vector2ul.
1222
1223 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1224
1225         * basic-simd.cs: New tests for Vector2l.
1226
1227 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1228
1229         * cpu-x86.md: Add long version of most packed int ops.
1230
1231         * mini-ops.h: Same.
1232
1233         * mini-x86.h: Same.
1234
1235         * simd-intrinsics.c: Add new vector type Vector2l.
1236
1237 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1238
1239         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
1240
1241         * simd-methods.h: Remove SN_op_BitwiseXor.
1242
1243 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
1244
1245         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
1246         alignment.
1247
1248 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1249
1250         * basic-simd.cs: Test for Vector2d.
1251
1252         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
1253         value.
1254
1255 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1256
1257         * cpu-x86.md: Add double version of all packed float ops.
1258
1259         * mini-ops.h: Same.
1260
1261         * mini-x86.h: Same.
1262
1263         * simd-intrinsics.c: Add new vector type Vector2d.
1264
1265         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
1266
1267         * simd-methods.h: Add Duplicate.
1268
1269 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1270
1271         * basic-simd.cs: Test for packing with signed saturation.
1272
1273 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
1274
1275         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
1276         found in the TYPESPEC table.
1277
1278 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
1279
1280         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
1281         too.
1282
1283         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
1284
1285         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
1286         instead of the RVA, since the RVA can be changed by tools like the cil 
1287         stripper.
1288
1289         * method-to-ir.c (mono_method_to_ir2): Ditto.
1290
1291         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
1292         (deserialize_variable): Ditto.
1293
1294 2008-10-25  Martin Baulig  <martin@ximian.com>
1295
1296         * debug-mini.c (write_variable): Use
1297         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
1298
1299 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1300
1301         * cpu-x86.md: Add unsigned variants of packd and packw.
1302
1303         * mini-ops.h: Same.
1304
1305         * mini-x86.h: Emit the right instruction for packd and packw.
1306         Add unsigned variants of packd and packw.
1307
1308         * simd-intrinsics.c: Packd and packw were used in place of their
1309         unsigned variants. Change that.
1310         Add intrinsics for (Signed)PackWithSignedSaturation.
1311
1312         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
1313
1314 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1315
1316         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
1317
1318 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1319
1320         * mini-ops.h: Remove dword packed add/sub with saturation ops.
1321
1322         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
1323
1324         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
1325         sse instructions.
1326
1327         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
1328
1329 2008-10-24  Mark Probst  <mark.probst@gmail.com>
1330
1331         * method-to-ir.c, mini.c: Special casing for the synchronized
1332         wrapper for the ldtoken+GetTypeFromHandle case.
1333
1334 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1335
1336         * mini.c (mono_replace_ins): Move this to branch-opts.c.
1337
1338         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
1339         created/split bblocks.
1340
1341 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1342
1343         * mini-ops.h: Add packed signed mul high.
1344         
1345         * cpu-x86.md: Same.
1346
1347         * mini-x86.c (mono_arch_output_basic_block): Same.
1348
1349         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
1350
1351         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
1352
1353 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1354
1355         * basic-simd.cs: Tests for Vector16sb.
1356
1357 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1358
1359         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
1360
1361 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1362
1363         * mini-ops.h: Add packed signed min, max and compare greater.
1364         
1365         * cpu-x86.md: Same.
1366
1367         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
1368         saturation.
1369
1370         * simd-methods.h: Add CompareGreaterThan.
1371
1372         * simd-methods.h: Remove CompareEquals.
1373
1374         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
1375
1376         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
1377
1378         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
1379         CompareEqual.
1380
1381 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1382
1383         * basic-simd.cs: Fix tests due to change in the API.
1384
1385 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1386
1387         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
1388
1389 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1390
1391         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
1392
1393         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
1394         inst_offset as this has invalid values for LDADDR.
1395
1396 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1397
1398         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1399
1400         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
1401
1402 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
1405         for accessing field->data.
1406
1407 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1408
1409         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1410
1411 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1412
1413         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
1414
1415         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
1416
1417 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1418
1419         * dominators.c (mono_compute_natural_loops): Allocate GList enties
1420         from the cfg mempool.
1421
1422 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1423
1424         * basic-simd.cs: Tests for new methods in Vector8us.
1425
1426 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1427
1428         * mini-ops.h: Add multiply and store high.
1429         
1430         * cpu-x86.md: Same.
1431
1432         * mini-x86.c (mono_arch_output_basic_block): Same.
1433
1434         * simd-methods.h: Same.
1435
1436         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
1437         and CompareEqual.
1438
1439 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1440
1441         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
1442         mono_class_setup_vtable ().
1443
1444         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
1445         mono_class_get_vtable_entry () for accessing klass->vtable.
1446
1447         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
1448
1449         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
1450         found.
1451
1452         * method-to-ir.c (mono_save_token_info): Don't save references made from
1453         wrappers.
1454
1455         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
1456         of generic instances.
1457
1458         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
1459
1460 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1461
1462         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
1463         OP_JMP depends on the method signature.  Calculate it properly.
1464
1465 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1466         
1467         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
1468         called directly.
1469
1470         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
1471         instances.
1472         (emit_extra_methods): Add another table mapping method indexes to 
1473         offsets in the extra_method_info table.
1474
1475         * mini.h: Bump AOT file format version.
1476         
1477         * aot-runtime.c: Merge most of the code from mono_aot_get_method
1478         and mono_aot_get_method_from_token () into one function.
1479
1480 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1481
1482         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
1483         separate counter.
1484
1485 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
1486
1487         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
1488         methods.
1489
1490         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
1491         disable_aot.
1492
1493         * mini.c (mono_patch_info_equal): Compare the generic context as well.
1494
1495         * mini.h: Bump aot file format version.
1496
1497         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
1498         AOT file can contain native code for methods which are not in the METHOD
1499         table. Generate code for non-sharable generic instances of generic methods
1500         found in the METHODSPEC table.
1501         
1502         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
1503         encoding generic type handles.
1504
1505         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
1506         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
1507
1508         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
1509         macros + MONO_ADD_INS.
1510
1511         * mini.c (mono_jump_info_token_new2): New function which takes a generic
1512         context as well.
1513
1514         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
1515
1516         * mini.h: Bump aot file format version.
1517
1518         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
1519
1520 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1521
1522         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
1523         platforms, with definable stack alignment value.  Set to 16 now
1524         for all platforms.
1525
1526         * mini.c, mini.h, driver.c: Command line option for disabling
1527         stack alignment.
1528
1529 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1530
1531         * basic-simd.cs: Tests for new methods in Vector4ui.
1532
1533 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1534
1535         * mini-ops.h: Add packed int shuffle.
1536         
1537         * cpu-x86.md: Same.
1538
1539         * mini-x86.c (mono_arch_output_basic_block): Same.
1540
1541         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
1542         extract mask, max, min, shuffle.
1543
1544         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
1545
1546 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1547
1548         * basic-simd.cs: Tests for new methods in Vector8us.
1549
1550 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1551
1552         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
1553         RuntimeTypeHandle, not a TypedReference.
1554
1555 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
1556
1557         * simd-intrinsics.c: remove relocations.
1558
1559 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
1560
1561         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
1562         optimizations from the x86 backend.
1563
1564 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
1565
1566         * simd-methods.h, simd-intrinsics.c: debloat method names and
1567         prepare for no relocations.
1568
1569 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1570
1571         * mini-ops.h: Add packed min/equal and sum of absolute differences.
1572         
1573         * cpu-x86.md: Same.
1574
1575         * mini-x86.c (mono_arch_output_basic_block): Same.
1576
1577         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
1578         extract mask, max, min and sum of absolute differences.
1579
1580         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
1581         method name.
1582
1583 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1584
1585         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
1586         Renamed one test for consistency.
1587
1588 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1589
1590         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
1591         fix to the code that deal with other blocks.
1592
1593 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1594
1595         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
1596
1597 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1598
1599         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
1600         that deals with vreg interference. Explicitly check for OP_LDADDR to be
1601         able to process the source reg.
1602
1603 2008-10-16  Martin Baulig  <martin@ximian.com>
1604
1605         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
1606
1607         * inssel.brg: Add `OP_HARD_NOP'.
1608
1609         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
1610
1611         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
1612         `OP_HARD_NOP' instruction when running inside the debugger.
1613
1614         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
1615         `OP_HARD_NOP' instruction when running inside the debugger.
1616
1617 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1618
1619         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
1620         now works. The issue with the regalloc tripping up no longer
1621         happens.
1622
1623         * simd-intrinsics.c (load_simd_vreg): Same.
1624
1625 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1626         
1627         * basic-simd.cs: Tests for new Vector8ui methods.
1628
1629 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1630
1631         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
1632         only for type. This fixes crashes where MonoInst::klass is checked
1633         for ops of type != VTYPE or OBJ.
1634
1635         * simd-intrinsics.c (load_simd_vreg): Same.
1636
1637 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1638
1639         * mini-ops.h: Add ops for packed shuffle/max/avg and
1640         extract mask.
1641         
1642         * cpu-x86.md: Same.
1643
1644         * mini-x86.c (mono_arch_output_basic_block): Same.
1645
1646         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
1647         extract mask.
1648
1649         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
1650         to emit extract mask op.
1651
1652         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
1653         to emit word shuffles.
1654
1655 2008-10-15  Mark Probst  <mark.probst@gmail.com>
1656
1657         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
1658         the largest alignment needed by a variable, but at least
1659         sizeof(gpointer).
1660
1661 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1662
1663         * basic-simd.cs: Tests for the fixes in the last commit.
1664
1665 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1666
1667         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
1668         no longer handles STACK_PTR input.
1669
1670         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
1671
1672         * simd-intrinsics.c (load_simd_vreg): New function that works like 
1673         get_simd_vreg   but handles STACK_PTR input.
1674
1675         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
1676         as the input can be an arbitrary pointer.
1677
1678         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
1679         LDADDR local optimization directly otherwise use a store op.
1680
1681 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1682
1683         * basic-simd.cs: Tests for dup low and dup high.
1684
1685 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1686
1687         * mini-ops.h: Add dup low and dup high ops.
1688         
1689         * cpu-x86.md: Same.
1690
1691         * mini-x86.c (mono_arch_output_basic_block): Same.
1692
1693         * simd-intrinsics.c (vector4f_intrinsics): Same.
1694
1695 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1696
1697         * basic-simd.cs: Tests for recently added functionality.
1698
1699 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1700
1701         * mini-ops.h: Add remaining sse1 fp ops.
1702         
1703         * cpu-x86.md: Add remaining sse1 fp ops.
1704
1705         * mini-x86.c (mono_arch_output_basic_block): Same.
1706
1707         * mini.h: Add enum for simd FP compare conditions.
1708
1709         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
1710
1711         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
1712         so the backed can generate the appropriate op.
1713
1714 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1715         This patch squeese one more byte from the SimdIntrinsc struct.
1716
1717         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
1718         a a shift amount intead of simply or'ing it.
1719
1720         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
1721
1722         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
1723         byte so we can have an aditional flags field without increasing struct size.
1724
1725         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
1726         against the simd_supported_versions bitmask.
1727
1728         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
1729
1730 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
1731
1732         * mini.c: remove rawbuffer code (the only use here is unsafe because
1733         it takes locks during signal handling and the kernel now provides much
1734         better info in proc/pid/smaps these days).
1735
1736 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
1737
1738         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
1739         OP_X86_PUSH_OBJ. Fixes #434620.
1740
1741         * objects.cs: Add a test.
1742         
1743 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
1744
1745         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
1746         that the packuswb/packusdw don't work with unsigned numbers for what
1747         would be negative numbers in signed format.
1748
1749         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
1750         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
1751
1752         * mini-ops.h: Add doubleword forms of many ops and packing ones.
1753
1754         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
1755
1756         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
1757
1758         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
1759
1760         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
1761         add more ops.
1762
1763         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
1764         version as the enum in mini.h.
1765
1766         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
1767         for sse3 ops, check the simd_version field if present. This way the code
1768         works with all versions of sse.
1769
1770 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1771
1772         * simd-intrinsics.c: Fixed intrinsic name typo.
1773
1774         * mini.h: Added missing simd exported function.
1775
1776         * basic-simd.cs: Added tests for Vector4ui.
1777         Fixed broken test for Vector16b.
1778
1779 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
1780
1781         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
1782         the max length to 64.
1783
1784 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1785
1786         * method-to-ir.c: Only do the fast virtual generic method call for
1787         non-wrapper methods.
1788
1789         * mini.h, mini-trampolines.c: The new generic virtual remoting
1790         trampoline handles virtual method calls via the vtable (as done by
1791         the fast virtual generic method calls) to remoting proxies.
1792
1793         * mini.c (mono_jit_create_remoting_trampoline): For generic
1794         methods reate a generic virtual remoting trampoline.
1795
1796         * mini-amd64.h: Enable fast virtual generic method calls again.
1797
1798 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1799
1800         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
1801         restore registers when doing tail calls.
1802
1803 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1804
1805         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
1806         Vector4ui.
1807
1808 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1809
1810         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
1811
1812 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1813
1814         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
1815
1816 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1817
1818         * basic-simd.cs: Retrofit for API changes.
1819
1820 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1821
1822         * mini-ppc.c: Handle integer stack arguments for tail calls.
1823
1824 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1825
1826         * optflags-def.h: Removed sse3 optimization.
1827
1828         * driver.c: Same.
1829
1830         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
1831         sse3.
1832
1833         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
1834
1835         * mini.h: Added enumeration with simd versions.
1836
1837         * simd-intrinsics.c (emit_intrinsics): Use the new static var
1838         for detecting SSE3.
1839
1840         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
1841
1842         * mini.c (mini_init): Call mono_simd_intrinsics_init.
1843
1844 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1845
1846         * basic-simd.cs: Added tests for Vector8u and Vector16u.
1847
1848         * basic-simd.cs: Fixed test naming.
1849
1850 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1851
1852         * mini-ops.h: Added ops for packed and saturated math, shifts
1853         and packing/unpacking.
1854
1855         * cpu-x86.md: Added descriptors for the above ops.
1856
1857         * mini-x86.c: Added code to emmit the above ops.
1858
1859         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
1860
1861 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
1862
1863         * aot-compiler.c (compile_method): Enable AOT for generic code.
1864
1865         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
1866
1867 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
1868
1869         * mini.c: add a workaround for a common screwup that ends up blamed
1870         to mono (other processes blocking signal delivery).
1871
1872 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1873
1874         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
1875         in the LDFLD/STFLD opcodes. Fixes #432673.
1876
1877         * iltests.il.in: Add a new test.
1878
1879 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
1880
1881         * mini-arm.c: attach the thread in unmanaged->managed transitions
1882         using delegates (bug #433148).
1883
1884 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1885
1886        * basic-simd.cs: Use new ShuffleSel constants.
1887
1888 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1889
1890         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
1891
1892         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
1893         only disable simd intrinsics if no sse2 is detected.
1894
1895         * optflags-def.h: Added sse3.
1896
1897         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
1898         is disabled.
1899
1900 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1901
1902         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
1903         when adding delegate-invoke wrappers.
1904
1905 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1906
1907         * Makefile.am: Reenable the simd tests.
1908
1909 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
1910
1911         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
1912           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
1913           other vreg is allocated to that hreg.
1914
1915         Contributed under MIT/X11 license.
1916
1917 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1918
1919         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
1920         yet checked in.
1921
1922 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1923
1924         * basic-simd.cs: New test suite for SIMD intrinsics.
1925
1926         * Makefile.am: Added new tests.
1927
1928 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1929
1930         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
1931
1932         * mini-ops.h: Same.
1933
1934         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
1935
1936         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
1937         using SSE2 aware opcodes.
1938
1939         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
1940         is enabled, this code path is only reachable if conversion ops are emmited after
1941         mono_method_to_ir.
1942
1943         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
1944
1945         This optimization saves 6 bytes per conversion against the old version.
1946
1947 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1948
1949         * aot-compiler.c (compile_method): Don't skip methods referencing 
1950         generic methods without a corresponding entry in token_info_hash, since
1951         encode_method_ref () can handle all generic methods now.
1952
1953         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
1954         generic context is set.
1955         
1956         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
1957         generic sharing of LDTOKEN.
1958
1959 2008-10-06  Mark Probst  <mark.probst@gmail.com>
1960
1961         * mini-amd64.h: Temporarily disabled fast virtual generic method
1962         calls because it breaks the System.Runtime.Remoting tests.
1963
1964 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1965
1966         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
1967
1968         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
1969         so inlining actually works.
1970         (check_inline_caller_method_name_limit): Ditto.
1971
1972 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
1973
1974         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
1975         64 bit safety (from Olaf Hering and Andreas Färber).
1976
1977 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1978         
1979         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
1980         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
1981         unused virtual call support code.
1982
1983         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
1984         
1985         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
1986         which can't use aot trampolines.
1987         (decode_patch): Don't create aot trampolines for methods which can't use
1988         them.
1989
1990         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
1991         use aot trampolines.
1992
1993         * mini.h: Bump AOT image format version.
1994         
1995 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
1996
1997         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
1998         to save_token_info () since cmethod is inflated for constrained calls.
1999
2000         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
2001
2002 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
2003
2004         * Makefile.am: Add build rules for ppc64.
2005         This avoids the build failing at pedump with unresolved symbols
2006         due to lack of arch_sources. Instead it will now fail earlier
2007         due to lack of cpu-ppc64.md.
2008
2009         Contributed under MIT/X11 license.
2010
2011 2008-10-04  Mark Probst  <mark.probst@gmail.com>
2012
2013         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
2014         tail calls.
2015
2016         * iltests.il.in: Add test case for tail call with many arguments.
2017
2018 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
2019
2020         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
2021         to the fast virtual generic method code until the aot case is fixed.
2022
2023 2008-10-03  Mark Probst  <mark.probst@gmail.com>
2024
2025         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
2026
2027 2008-10-03  Mark Probst  <mark.probst@gmail.com>
2028
2029         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
2030         thunks.
2031
2032 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
2033         
2034         * simd-intrinsics.c: Forgot to add this one.
2035
2036         * mini-codegen.c: Fix macro in case SIMD is not supported.
2037
2038 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
2039         
2040         This patch land initial JIT support for simd intrinsics.
2041
2042         * mini-x86.h: Added new define to make --enable_minimal work on x86.
2043
2044         * Makefile.am: Added simd-intrinsics.c
2045
2046         * simd-intrinsics.c: New file with simd instrinsic related
2047         code.
2048
2049         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
2050
2051         * cpu-x86.md: Add simd related instructions.
2052
2053         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
2054
2055         * driver.c: Added two new --regression variants.
2056
2057         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
2058
2059         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
2060
2061         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
2062         extract some complicated logic to helper functions.
2063
2064         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
2065
2066         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
2067
2068         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
2069         the specialized simplification pass.
2070
2071         * method-to-ir.c (mono_spill_global_vars): Use new macro.
2072
2073         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
2074
2075         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
2076         table.
2077
2078         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
2079         if MONO_ARCH_NEED_SIMD_BANK is defined.
2080
2081         * mini-ops.h: Added the new simd ops.
2082
2083         * mini-x86.c: Added mono_arch_xregname.
2084
2085         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
2086
2087         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
2088
2089         * mini-x86.h: Define simd related MONO_ARCH macros.
2090
2091         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
2092
2093         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
2094
2095         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
2096         MONO_CLASS_IS_SIMD to deal with simd related IR.
2097
2098         * mini.h (MonoInst): Added spill_var to the backend union.
2099
2100         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
2101
2102         * mini.h: Added forward declarations of the new simd fuctions.
2103
2104         * optflags-def.h: Added new optimization names SIMD.
2105
2106         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
2107
2108         * regalloc.h: Added support for working with 3 register banks.
2109
2110         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
2111
2112         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
2113
2114 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
2115
2116         * mini-exceptions.c: remove 64 bit related ifdef clutter.
2117
2118 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
2119
2120         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
2121         instead of one on 64 bit systems.
2122
2123         * method-to-ir.c: Remove unused includes.
2124
2125 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
2126
2127         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
2128         cfg->used_int_regs, since the two are different on arm.
2129
2130 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2131
2132         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
2133         mono_method_get_vtable_index() to get the vtable index.
2134
2135 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2136
2137         * method-to-ir.c (mono_method_to_ir2): Don't create native
2138         wrappers for array methods, because they're never called (and if
2139         they were called they wouldn't work).
2140
2141 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2142
2143         * method-to-ir.c (mono_method_to_ir2): Array methods are
2144         special-cased and must not be invoked indirectly via the (M)RGCTX
2145         when generic sharing is turned on.  Fixes #431413.
2146
2147 2008-10-01  Mark Probst  <mark.probst@gmail.com>
2148
2149         * method-to-ir.c: When generic sharing is active, call
2150         non-interface virtual generic methods via the standard trampoline.
2151
2152         * mini-trampolines.c: Handle virtual generic shared methods.
2153
2154         * mini.h, mini-x86.c, mini-x86.h: New argument for
2155         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
2156         method thunks and which is the trampoline to call if the lookup
2157         fails.  Enable the virtual generic method thunk for x86.
2158
2159         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
2160         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
2161         argument but assert that it's NULL, because these archs don't yet
2162         implement the virtual generic method thunk.  Changes in the IMT
2163         thunk data structures.
2164
2165 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
2166
2167         * aot-compiler.c (emit_globals): Avoid invalid characters in
2168         the static linking symbol.
2169
2170         * objects.cs: Add a test for the range check optimization. Fix warnings.
2171
2172         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
2173         optimization from the current JIT.
2174
2175         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
2176         later in decompose_array_access_opts () to allow more optimizations.
2177
2178         * method-to-ir.c (mono_handle_soft_float): Rename this to 
2179         mono_decompose_soft_float () for consistency.
2180
2181         * mini-ops.h: Fix arguments of OP_STRLEN.
2182
2183         * method-to-ir.c (save_cast_details): Extract the cast details saving code
2184         into a separate function.
2185         (reset_cast_details): Ditto.
2186         (handle_unbox): Save cast details. Fixes #431254.
2187
2188         * method-to-ir.c: Remove some obsolete FIXMEs.
2189
2190 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2191
2192         * ir-emit.h (alloc_dreg): Write a warning before crashing.
2193
2194 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2195
2196         * mini-codegen.c: More work on macros to make them
2197         ready for multiple regbanks.
2198
2199 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2200
2201         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
2202
2203         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
2204
2205 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2206
2207         * mini-codegen.c (mono_spillvar_offset): Proper support for
2208         multiple regbanks.
2209
2210 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
2211
2212         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
2213         the stack overflow changes.
2214
2215 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2216
2217         * mini-codegen.c: Make all bank macros depend on reg_bank.
2218
2219         * mini-codegen.c (mono_local_regalloc): Make free mask
2220         initialization regbank aware.
2221
2222 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2223
2224         * mini-codegen.c (mono_local_regalloc): Extract callee
2225         mask selection to a function and make it regbank aware.
2226
2227 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2228
2229         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
2230         code to deal with many regbanks.
2231
2232 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * mini-codegen.c: More fp->regbank changes.
2235
2236 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
2237
2238         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
2239         of a hardcoded constant.
2240
2241 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
2242
2243         * method-to-ir.c (type_from_stack_type): Fix typo.
2244
2245 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
2246
2247         * mini-ia64.c (emit_move_return_value): Convert float return values to
2248         double.
2249
2250         * objects.cs: Add a new test.
2251         
2252         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
2253         VARARG methods to fix an assert later.
2254
2255         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
2256         end so it at least compiles.
2257
2258 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
2259
2260         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
2261
2262 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
2263
2264         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
2265         optimization to a new function (emit_optimized_ldloca_ir) and enable
2266         it for both ldloca and ldloca_s.
2267
2268 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
2269
2270         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
2271         gshared CASTCLASS code.
2272
2273         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
2274         amd64, where the libc stack unwinder encounters stack frames referring to
2275         native code in unmapped memory.
2276
2277         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
2278         sharing.
2279
2280         * generics.cs: Add new test.
2281
2282 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
2283
2284         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
2285         add a check that one of the ARM_FPU_ constants is defined.
2286
2287         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
2288         
2289         * mini-exceptions.c: Fix build on non-altstack platforms.
2290
2291         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
2292         sharing of vtypes.
2293
2294         * ir-emit.h: Add a comment to NEW_PCONST.
2295
2296         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
2297
2298         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
2299
2300         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
2301         after the changes to MonoJitDomainInfo.
2302
2303 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2304
2305         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
2306
2307 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2308
2309         * mini-ppc.c: Compiler warning fixes.
2310
2311 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2312
2313         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
2314         for pinvokes.
2315
2316 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2317
2318         * exceptions-ppc.c, mini-ppc.h: Compile
2319         mono_arch_handle_altstack_exception() on Darwin, too.
2320
2321 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2322
2323         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
2324         work on archs which don't have generic sharing implemented, only
2325         without the vtable_arg.
2326
2327 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2328
2329         * mini.c: Added comment explaining why delegate ctor icall
2330         wrappers are compiled.
2331
2332 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2333
2334         * mini.c: Don't produce trampolines to delegate ctor icall
2335         wrappers but compile them upfront.
2336
2337 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
2338
2339         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
2340         runtime-set function when going back to managed code. Currently this
2341         is used to set back the protection on the soft ovf pages and/or to
2342         throw the stack overflow exception that happened in unmanaged code.
2343
2344 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
2345
2346         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
2347         runtime-set function when going back to managed code. Currently this
2348         is used to set back the protection on the soft ovf pages and/or to
2349         throw the stack overflow exception that happened in unmanaged code.
2350
2351 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
2352
2353         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
2354         the support code for restoring stack protection after stack overflows
2355         that happen in unmanaged code. Don't set the exec permission on the
2356         soft overflow area.
2357
2358 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
2359
2360         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
2361         delegate->method_ptr is set. Fixes #428054.
2362
2363 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2364
2365         * tests.cs: Rename to ratests.cs.
2366
2367         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
2368         emit_get_rgctx_... functions.
2369
2370 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2371
2372         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
2373
2374 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2375
2376         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
2377         before asserting that method is sharable.
2378
2379 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2380
2381         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
2382         whether method needs a static RGCTX wrapper used instead of
2383         complex conditions.
2384
2385         * generic-sharing.c, mini.h: A few functions moved to
2386         metadata/generic-sharing.c.
2387
2388 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2389
2390         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
2391         Generic code sharing for value types, which essentially means
2392         treating value type methods like static methods.  The RGCTX is
2393         passed in the same way.
2394
2395 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
2398         opcode when creating multi-dimensional arrays of open types.
2399
2400         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
2401         open generic types.
2402
2403         * generics.cs: Add a test.
2404
2405         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
2406
2407 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2408
2409         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
2410
2411         * mini.c (mini_method_compile): Set it when running under the debugger. 
2412
2413         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
2414         vreg optimization if the flag is set.
2415
2416         * driver.c (mono_main): Add --attach= option to pass options to
2417         the attach agent.
2418
2419         * mini.c (sigquit_signal_handler): Start the attach agent.
2420
2421         * ssapre.c: Disable this to save space since it is not yet ported to
2422         linear IR.
2423
2424         * regalloc2.c: Disable this to save space.
2425
2426         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
2427
2428 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
2429
2430         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
2431         the -v option useful again.
2432
2433 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2434
2435         * mini-amd64.c (mono_arch_output_basic_block): Add support for
2436         --break-at-bb.
2437
2438         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
2439         arrays of arrays. Fixes #428406.
2440
2441         * method-to-ir.c (mini_emit_castclass): Ditto.
2442
2443         * objects.cs: Add new test.
2444         
2445 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
2446
2447         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
2448         was wrong at it choked against target_type_is_incompatible for byref types.
2449
2450 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
2453         places.
2454
2455 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
2456
2457         * mini-exceptions.c: update a few more exceptions-related counters.
2458
2459 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
2460
2461         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
2462         new functions to allocate from persistent mempools.
2463
2464 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2465
2466         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
2467         multiple register banks in the future.
2468
2469         * mini-codegen.c (mono_local_regalloc): Fix a warning.
2470
2471 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
2472
2473         * mini.c (type_to_eval_stack_type): Remove duplicated function.
2474
2475         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
2476
2477         * mini.h: Export type_to_eval_stack_type.
2478
2479         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
2480         is only ins->klass of byref types.
2481
2482 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
2483
2484         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
2485         (mini_emit_memcpy2): Ditto.
2486
2487         * mini-amd64.c: Fix a warning.
2488
2489 2008-09-21  Mark Probst  <mark.probst@gmail.com>
2490
2491         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
2492         linking.
2493
2494 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
2495
2496         * method-to-ir.c: Extract stloc micro-optimization to a
2497         function and apply it to all cases.
2498
2499 2008-09-19  Mark Probst  <mark.probst@gmail.com>
2500
2501         * method-to-ir.c: Don't fail generic code sharing in cases we
2502         already support.
2503
2504 2008-09-18  Mark Probst  <mark.probst@gmail.com>
2505
2506         * mini-ppc.c: Handle structs in tailcalls on Darwin.
2507
2508 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
2509
2510         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
2511         implementation.
2512
2513 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
2514
2515         * trace.c: make tracing more useful and correct, with per-thread
2516         id and indent info.
2517
2518 2008-09-15  Mark Probst  <mark.probst@gmail.com>
2519
2520         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
2521         doing a method call and the argument is an R4.
2522
2523 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
2524
2525         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
2526         generic methods.
2527
2528 2008-09-13  Mark Probst  <mark.probst@gmail.com>
2529
2530         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
2531
2532 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
2533
2534         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
2535         (MONO_JUMP_TABLE_FROM_INS): Ditto.
2536
2537 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2538
2539         * driver.c: Add a --agent argument (not supported yet) to load managed
2540         agent assemblies before loading the main assembly, similarly to how the
2541         Java VM handles agents.
2542
2543 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2544
2545         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
2546         function to do stack layout of local variables.
2547
2548 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2549
2550         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
2551         calculation.
2552
2553 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2554
2555         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
2556         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
2557         JIT if DISABLE_JIT is defined.
2558
2559         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
2560         defined.
2561
2562 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2563
2564         * iltests.il.in: Disable the fconv test on PPC (the result is
2565         undefined according to ECMA).
2566
2567 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2568
2569         * iltests.il.in: Enable tail call tests for PPC.
2570
2571         * mini.h: Add variable for storing incoming valuetype argument
2572         addresses for tail calls.
2573
2574         * mini-ppc.c: Implement valuetype arguments and return values for
2575         tailcalls on Linux.
2576
2577 2008-09-09  Mark Probst  <mark.probst@gmail.com>
2578
2579         * mini-ppc.c: Partially implement tail calls (struct arguments and
2580         return values not supported).
2581
2582         * method-to-ir.c: Enable tail calls on PPC.
2583
2584 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
2585
2586         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
2587         runtime-invoke wrappers to work around the problem of them getting
2588         assigned to a random class.
2589
2590         * aot-runtime.c (mono_aot_get_method): Ditto.
2591         
2592 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
2593
2594         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
2595         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
2596
2597 2008-09-07  Mark Probst  <mark.probst@gmail.com>
2598
2599         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
2600         until they're implemented properly.
2601
2602         * exceptions-ppc.c: Use arch-independent exception-handling code
2603         instead of custom one.
2604
2605         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
2606         for Linear IR.
2607
2608         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
2609
2610         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
2611         applies when __powerpc__ is defined.
2612
2613 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
2614
2615         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
2616         methods to their code to avoid computing the full name of wrappers and
2617         doing a lookup in a string hash table.
2618
2619 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2620
2621         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
2622         we identify bblocks before method_to_ir () is ran.
2623
2624         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
2625         Also avoid optimizing branches pointing to themselves.
2626
2627         * mini.c (mini_method_compile): Ditto. Fixes #422947.
2628
2629 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2630
2631         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
2632
2633 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2634
2635         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
2636         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
2637         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
2638         'buf'.
2639
2640         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
2641         jumped to the same entry in plt_jump_table.
2642
2643 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
2644
2645         * method-to-ir.c (initialize_array_data): Handle field with RVA from
2646         dynamic images.
2647
2648 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
2649
2650         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
2651         other assignment can be if converted. Saves 1.5% on corlib size and fixes
2652         #421807.
2653
2654 2008-08-29  Geoff Norton  <gnorton@novell.com>
2655
2656         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
2657         segment, and doesn't properly handle .space as .text.  Fixes
2658         AOT Mach/ARM
2659
2660 2008-08-29  Geoff Norton  <gnorton@novell.com>
2661
2662         * mini.c: Disable the mach exception handler when running on 
2663         ARM
2664
2665 2008-08-29  Geoff Norton  <gnorton@novell.com>
2666
2667         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
2668         globals on Darwin/ARM
2669
2670 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
2671
2672         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
2673         since too many things depend on it. Instead, call 
2674         mono_runtime_set_no_exec ().
2675         
2676         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
2677         the new JIT.
2678
2679         * aot-compiler.c: Add an 'asm-only' AOT option.
2680
2681         * mini.c: Avoid initializing the runtime when doing AOT compilation.
2682                 
2683         * aot-compiler.c (compile_method): Disable gshared support for now as it
2684         doesn't yet work.
2685
2686 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2687
2688         * mini-amd64.h : Fix a compiler warning.
2689
2690         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
2691           Changed to use a callback function to retrieve the unwind info.
2692           This avoids problems observed when code blocks were removed by
2693           unloading an app domain.
2694
2695         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
2696           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
2697           to work properly.
2698
2699         Contributed under MIT/X11 license.
2700
2701 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2702
2703         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
2704           case to keep the stack aligned to 8.
2705
2706         Contributed under MIT/X11 license.
2707
2708 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
2709
2710         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
2711         avoid repeated linear searches.
2712
2713 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
2714
2715         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
2716         methods it can't handle.
2717         
2718         * aot-compiler.c (add_method): Avoid adding a method twice.
2719         (add_wrappers): Add runtime invoke wrappers for all methods.
2720
2721         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
2722         function to create an aot-compatible version of this trampoline.
2723
2724         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
2725
2726 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
2727
2728         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
2729
2730         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
2731         with a generic sharing failure.
2732
2733         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
2734
2735         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
2736         CEE_RETHROW. Fixes #419634.
2737
2738         * mini.c (mono_method_to_ir): Ditto.
2739
2740         * exceptions.cs: Add a new test.
2741         
2742         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
2743         to mono_type_stack_size_internal () since some callers might not pass in
2744         an rgctx.
2745
2746         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
2747         instrument_prolog. Fixes #419878.
2748
2749         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
2750         doubles in soft float mode volatile.
2751
2752 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
2753
2754         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
2755
2756         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
2757         to handle soft float correctly.
2758
2759         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
2760         the fast path.
2761
2762         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
2763
2764         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
2765         to sp, since the generics catch code requires it.
2766
2767         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
2768         copying.
2769
2770         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
2771         mono_arch_emit_imt_argument ().
2772
2773         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
2774
2775         * mini-arm.c tramp-arm.c: Generic sharing updates.
2776
2777 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
2778
2779         * mini-arm.c: Fix the arm build.
2780
2781         * generic-sharing.c (mini_type_get_underlying_type): New helper function
2782         handling enums, generic instances and generic sharing.
2783         (mini_type_stack_size_full): Ditto.
2784
2785         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
2786         
2787         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
2788
2789         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
2790
2791         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
2792         trampolines.
2793
2794         * mini-arm.c: Various small generic sharing changes.
2795
2796         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
2797         this for x86.
2798         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
2799         custom code.
2800
2801         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
2802         helper function to return a generic class init trampoline.
2803
2804         * method-to-ir.c mini.c: Use it.
2805         
2806         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
2807         arch-specfic function to return a generic class init trampoline.
2808
2809         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
2810         the GENERIC_CLASS_INIT custom code.
2811
2812         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
2813         a fatal error, not a sharing failure.
2814
2815         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
2816         needed.
2817
2818         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
2819         trampoline argument from MONO_ARCH_VTABLE_REG.
2820
2821         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2822         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2823         argument, and pass the vtable in VTABLE_REG.
2824
2825         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2826         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2827         argument, and pass the vtable in VTABLE_REG.
2828         (mono_arch_create_trampoline_code_full): Remove some special casing for
2829         the rgctx fetch trampoline.
2830
2831         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
2832         Fixes #419273.
2833
2834         * iltests.il: Add a test for it.
2835
2836 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
2837
2838         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
2839
2840         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
2841         no longer needed.
2842
2843         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
2844         use mono_jit_info_table_find () to avoid recursion.
2845         (mono_delegate_trampoline): Add a sync wrapper here.
2846
2847         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
2848         here.
2849
2850         * mini.c (mono_method_to_ir): Ditto.
2851         
2852         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
2853         add_sync_wrapper argument. Don't add a sync wrapper here.
2854         (mono_create_jump_trampoline): Don't add a sync wrapper here.
2855
2856         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
2857         
2858 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2859
2860         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
2861           of nonvolatile registers back from MonoContext to CONTEXT.
2862
2863         Contributed under MIT/X11 license.
2864
2865 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2866
2867         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
2868           arguments on Winx64 there are only 4 argument registers.  For this
2869           logic to work the last argument must be pulled from the stack.  
2870
2871         Contributed under MIT/X11 license.
2872
2873 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
2874
2875         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2876
2877         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
2878         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
2879         encode/decode_method_ref ().
2880
2881         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
2882
2883         * aot-runtime.c (decode_patch): Ditto.  
2884
2885         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
2886         MONO_PATCH_INFO_METHOD.
2887
2888         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
2889         MonoGenericJitInfo.
2890
2891         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
2892         MonoGenericJitInfo.
2893
2894         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
2895
2896         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
2897         one from the caller.
2898
2899         * aot-runtime.c (decode_generic_inst): New function to decode and
2900         return a interned generic inst.
2901         (decode_klass_ref): Use it.
2902         (decode_method_ref): Ditto.
2903
2904         * aot-compiler.c (emit_exception_debug_info): Save 
2905         jinfo->has_generic_jit_info too.
2906
2907 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2908
2909         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
2910
2911         * iltests.il.in: Add a test for fconv_to_i.
2912
2913         * liveness.c: Disable the liveness2 pass for now to save space.
2914
2915         * regalloc2.c: Include mempool-internals.h to fix warnings.
2916
2917         * aot-compiler.c (encode_method_ref): Encode the context of generic
2918         instance methods.
2919
2920         * aot-runtime.c (decode_method_ref): Inflate generic methods using
2921         the context saved in the aot file.
2922
2923         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2924
2925         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2926
2927         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
2928         volatile so they won't be optimized away.
2929
2930 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2931
2932         * ssa.c:
2933         * ssa2.c:
2934         * mini.c:
2935         * regalloc2.c:
2936         * dominators.c: Remove duplicated functions that now are in
2937         mempool-internals.h.
2938
2939 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2940
2941         * aot-compiler.c: Fix warnings.
2942
2943         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
2944
2945         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
2946
2947         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
2948         as the patch type.
2949
2950         * mini.c (mono_resolve_patch_target): Ditto.
2951         
2952         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
2953         (encode_klass_ref): Add support for encoding VARs/MVARs.
2954
2955         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
2956
2957         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
2958         the handling of the got entries into a separate 'decode_got_entry' function.
2959         Add support for RGCTX_FETCH.
2960
2961         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
2962         clobbered by the trampoline code.
2963
2964         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
2965         not clobbered by the indirect calling code.
2966
2967 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2968
2969         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
2970         to fix the build.
2971
2972 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2973
2974         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
2975         signature using the compilation mempool otherwise we would leak it.
2976
2977 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2978
2979         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
2980         mono_emit_abs_call ().
2981
2982         * patch-info.h: Add GENERIC_CLASS_INIT.
2983
2984         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
2985
2986         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
2987         as their target as a near call.
2988
2989         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
2990         ABS handling code.
2991         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
2992
2993         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
2994         call to a runtime function described by a patch.
2995
2996         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
2997         mono_emit_abs_call, this has the advantage that the ABS handling code in
2998         mono_codegen () can handle them both, and can handle other stuff in the
2999         future without additional code.
3000
3001         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
3002         entry.
3003         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
3004         abs addresses.
3005
3006         * mini.h: Add missing bblock related prototypes.
3007
3008         * mini.h (MonoCompile): Remove unused reverse_inst_list and
3009         reverse_inst_list_len fields.
3010
3011         * mini.c: Refactor this file a bit by moving branch optimizations to 
3012         branch-opts.c.
3013
3014         * method-to-ir.c: Merge generic sharing changes missed earlier.
3015
3016         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
3017
3018         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
3019         shared patches. Process METHODCONST as a shared patch.
3020
3021         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
3022         as it crashes on the 2.0 mscorlib.
3023
3024         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
3025         to cause crashes.
3026         
3027         * aot-compiler.c: Use is_plt_patch () in a few additional places.
3028         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
3029         by IMT.
3030
3031         * aot-compiler.c: Reorganize the got handling code to be a bit more
3032         understandable.
3033
3034 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
3035
3036         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
3037         mono_patch_info_equals/hash, and use it to massively simplify
3038         get_plt_index ().
3039
3040         * mini.c (mono_patch_info_hash): Simplify this and add support for
3041         more patch types.
3042
3043         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
3044
3045         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
3046         handling code, since an offset is not enough to identify a trampoline.
3047
3048         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
3049
3050 2008-08-17  Mark Probst  <mark.probst@gmail.com>
3051
3052         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
3053
3054         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
3055
3056         * mini-ops.h: Argument and result types for OVF_CARRY ops.
3057
3058         * decompose.c: PPC decompositions for various ops.
3059
3060         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
3061
3062 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
3063
3064         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
3065         call the generic trampoline code using a call, instead of a jump, to
3066         remove some special casing from the generic trampoline code.
3067
3068         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
3069         (mono_codegen): Ditto.
3070
3071         * aot-compiler.c aot-runtime.c: Ditto.
3072
3073         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
3074
3075         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
3076         helper function to find the offset corresponding to a lazy fetch trampoline.
3077
3078         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
3079         when doing generic sharing.
3080
3081         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
3082         places.
3083         
3084         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
3085         mini-trampolines.c to be with the other trampoline creation functions.
3086
3087         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
3088         as it is equal to method->signature in most cases, add a 
3089         mono_emit_method_call_full variant which takes a signature and an imt
3090         argument as well.
3091
3092 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
3093
3094         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
3095         to this function, since it could be computed easily from the method 
3096         argument.
3097         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
3098         more.
3099
3100         * method-to-ir.c mini.c: Remove references to 
3101         compile_generic_method_wo_context.
3102
3103         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
3104         generic method calls.
3105         
3106         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
3107         dimensional non-szarrays.
3108
3109         * mini.c (mini_init): Register mono_array_new_1.
3110
3111         * jit-icalls.c (mono_array_new_1): New jit icall.
3112
3113         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
3114         pointing to the method.
3115
3116         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
3117         method addresses belonging to METHOD_JUMP patches in the 
3118         jump_target_got_slot_hash.
3119         (mono_aot_load_method): Ditto.
3120
3121         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
3122         METHOD_JUMP patches.
3123
3124         * mini.c (mini_create_jit_domain_info): New helper function which 
3125         initializes/frees domain->runtime_info.
3126         (mini_free_jit_domain_info): Ditto.
3127         (mini_init): Install the domain hook functions with the runtime.
3128
3129         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
3130         information maintained by the JIT.
3131
3132         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
3133         insertion into jump_table_hash into mono_codegen (), also implement proper
3134         locking.
3135
3136         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
3137         tail calls, it is already done by the aot code.
3138         
3139         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
3140         mechanism on amd64.
3141
3142         * iltests.il.in: Make the jmp test a bit more complex.
3143
3144         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
3145         generic instances which doesn't have a token.
3146
3147         * aot-runtime.c (decode_method_ref): Ditto.
3148         
3149         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
3150         can handle this case now.
3151         (handle_box): Ditto.
3152
3153 2008-08-15  Geoff Norton  <gnorton@novell.com>
3154
3155         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
3156         debugging check.
3157
3158 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
3159
3160         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
3161         calling generic methods.
3162
3163         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
3164
3165         * aot-runtime.c (decode_patch_info): Ditto.
3166
3167         * mini.c (mono_resolve_patch_target): Ditto.
3168         
3169         * patch-info.h: Add METHOD_RGCTX.
3170
3171         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
3172
3173 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
3174
3175         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
3176         arguments in registers.
3177
3178         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
3179         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
3180
3181         * mini.c (mini_method_compile): Abort aot compilation for generic
3182         methods if generic sharing is disabled.
3183         
3184         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
3185         an mrgctx.
3186
3187         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
3188         requiring an mrgctx.
3189
3190         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
3191         store instructions when converting a vcall to a normal call.
3192
3193         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
3194         mono_arch_find_jit_info.
3195
3196 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
3197
3198         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
3199         avoid calling mono_method_full_name () for every method even if the
3200         env var is not set.
3201         (check_inline_caller_method_name_limit): Ditto.
3202
3203 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
3204
3205         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
3206         assemblies in one run.
3207
3208         * aot-compiler.c (mono_compile_assembly): Only print out a count of
3209         skipped methods if it is not 0.
3210
3211         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
3212
3213 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
3214
3215         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
3216           MONO_ARCH_HAVE_UNWIND_TABLE.
3217
3218         Contributed under MIT/X11 license.
3219
3220 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
3221
3222         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
3223           from default optimizaton list on Winx64.
3224
3225         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
3226
3227         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
3228           the LMF from the MonoJitTlsData structure.
3229
3230         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
3231
3232         Contributed under MIT/X11 license.
3233
3234 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
3235
3236         * mini.c (sigsegv_signal_handler): Fix the build.
3237
3238         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
3239         assembly->aot_module.
3240
3241         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
3242         hash table. This simplifies and speeds up a lot of code, and fixes support
3243         for .netmodules.
3244
3245         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
3246         with the runtime.
3247
3248         * mini-exceptions.c: Ditto.
3249         
3250         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
3251         'native_offset' argument, since these are computed in the 
3252         mono_find_jit_info () function.
3253
3254         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
3255         is used by exceptions-ppc.c.
3256
3257         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
3258         mono_arch_find_jit_info ().
3259         
3260         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
3261         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
3262         generic code in mini-exceptions.c.
3263
3264 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
3265
3266         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
3267
3268         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
3269         
3270         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
3271         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
3272         called while holding the loader lock. Fixes #415608.
3273         (mono_aot_get_method_from_token_inner): Ditto.
3274
3275 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3276
3277         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
3278         to reduce differences between this and the generic implementation in
3279         mini-exceptions.c.
3280         (ves_icall_get_frame_info): Ditto.
3281
3282         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
3283
3284         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
3285         longer neccesarry.
3286
3287         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
3288         mono_arch_get_call_filter () and make it non-static, for consistency with the
3289         other architectures.
3290
3291 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
3292
3293         * mini.c:
3294         * local-propagation.c:
3295         * mini-x86.c: Correct the name of arch defines.
3296
3297 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3298
3299         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
3300         NO_EMULATE_LONG_SHIFT_OPS define.
3301
3302 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
3303
3304         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
3305         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
3306
3307         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
3308         MACH fixes. Merged from the 2.0 branch.
3309
3310         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
3311
3312         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
3313         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
3314
3315         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
3316
3317         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
3318         mono_marshal_get_native_wrapper () signature changes.
3319
3320 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3321
3322         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
3323         conversion bug under arm.
3324
3325 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
3326
3327         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
3328
3329         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
3330         with overflow checking.
3331
3332 2008-08-05  Marek Habersack  <mhabersack@novell.com>
3333
3334         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
3335         to the genmdesc.pl file
3336
3337 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
3338
3339         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
3340         arg_array in the soft-float versions of the LOAD/STORE macros.
3341
3342         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
3343         implementation.
3344
3345         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
3346
3347 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3348
3349         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
3350         a float HFA. Fixes #413621.
3351
3352 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
3353
3354         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
3355         frame_size to args_size. Fixes build.
3356
3357 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3358
3359         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
3360         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
3361
3362         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
3363         the stack are not unaligned. Fixes #413247.
3364         
3365 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3366
3367         * mini.c: update jitted methods performance counters.
3368
3369 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
3370
3371         * mini-exceptions.c: increase the exceptions thrown performance
3372         counter in mono_handle_exception ().
3373
3374 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
3375
3376         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
3377         can work with netmodules.
3378
3379 2008-07-28  Geoff Norton  <gnorton@novell.com>
3380
3381         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
3382         regression tests.
3383
3384 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3385
3386         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
3387         correct place.
3388
3389 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
3390
3391         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3392           The float param registers and other param registers must be the 
3393           same index on Windows x64.
3394
3395         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
3396           ArgValuetypeAddrInIReg argument case.  Setting the argument
3397           op to OP_VTARG_ADDR (OP_REGOFFSET)).
3398
3399         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
3400           variable computed above as the copy length for arguments of storage
3401           type ArgValuetypeAddrInIReg.
3402
3403         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
3404           ArgValuetypeAddrInIReg argument case.  This case will rely on
3405           mono_arch_emit_outarg_vt to emit the correct code later in the process.
3406
3407         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
3408           a 32 byte stack allocation for all calls.  We will omit the adjustment for
3409           jump and tail call instructoins as they do not follow the typical call behavior.
3410
3411         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
3412           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
3413           local variable and pass the local variable by reference to the called method.
3414
3415         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
3416           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
3417           of a struct is passed in a register it must be saved with the other
3418           volatile argument on the stack.
3419
3420         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
3421           frame pointer the stack adjustment value must be saved to the unwind 
3422           info structure.
3423
3424         Contributed under MIT/X11 license.
3425
3426 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3427
3428         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
3429         which got lost in the merge.
3430
3431 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3432
3433         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
3434         build.
3435
3436         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
3437         
3438         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
3439         icalls, since they won't be patched.
3440
3441         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
3442         different code sequence when running under valgrind to prevent some valgrind
3443         errors.
3444
3445         * iltests.il.in: Add new regression test.
3446
3447         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
3448         end with a throw.
3449
3450         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
3451         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
3452
3453         * iltests.il.in: Add new test.
3454
3455         * aot-compiler.c: Fix some warnings.
3456
3457         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
3458         Fixes #412494.
3459
3460 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3461
3462         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
3463         (mini_usage_jitdeveloper): Add a missing --wapi option.
3464
3465 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3466
3467         * mini-codegen.c: Simplify the is_fp macros.
3468         (free_up_ireg): Remove, use free_up_reg instead.
3469         (free_up_reg): Fix the fp case.
3470
3471 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3472
3473         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
3474         lowered earlier.
3475
3476         * exceptions-x86.c: Merge some changes which seemed to have got lost
3477         in the linear-ir merge.
3478
3479         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
3480
3481         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
3482         long vreg volatile even if the variable was already created.
3483
3484         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
3485         volatile variables.
3486
3487 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3488
3489         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
3490
3491         * mini.c (mono_jit_compile_method_inner): Add support for 
3492         MONO_EXCEPTION_BAD_IMAGE.
3493
3494         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
3495         mini_method_get_context () returns NULL. Fixes #356531.
3496
3497         * mini.c (mono_method_to_ir): Ditto.
3498         
3499         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
3500         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
3501
3502 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3503
3504         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
3505         in the LDFTN implementation.
3506
3507 2008-07-25  Mark Probst  <mark.probst@gmail.com>
3508
3509         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
3510         code, patch calls to icalls, too, even if they're not in the
3511         shared generic code hash.  Fixes #411962.
3512
3513 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3514
3515         * cpu-x86.md: Increase the length of the fcall opcodes.
3516
3517         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
3518         calls returning floats.
3519
3520         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
3521         on NEWARR.
3522         
3523         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
3524         missed earlier.
3525
3526         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
3527         into the domain->method_code_hash.
3528
3529         * aot-compiler.c: Fix win32 build.
3530
3531         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
3532         
3533         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
3534         gshared NEWARR implementation.
3535
3536         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
3537
3538         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
3539         can be used outside of method_to_ir.
3540
3541         * mini.h (MonoCompile): Add arg_types field.
3542
3543         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
3544         
3545         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
3546         the values of the local arg_array and param_types array.
3547
3548 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3549
3550         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
3551         got accesses might only get generated later when NEWOBJ is decomposed.
3552         
3553         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
3554         looking up the native code of the target method when a delegate is called
3555         for the first time.
3556
3557         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
3558         optimization.
3559
3560         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
3561
3562         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
3563         AOT work on platforms without a working dlsym implementation.
3564
3565         * mini.h: Bump AOT image format version.
3566         
3567 2008-07-24  Mark Probst  <mark.probst@gmail.com>
3568
3569         * mini-exceptions.c: Free a MonoType with
3570         mono_metadata_free_type() instead of g_free().
3571
3572         * aot-runtime.c: Free a MonoType.
3573
3574 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3575
3576         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
3577         optimization.
3578
3579         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
3580         fp stack on x86.
3581
3582 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
3583         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
3584         profiler hook.
3585
3586 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3587
3588         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
3589         NEWOBJ calls on valuetypes.
3590
3591         * iltests.il.in: Add new test.
3592
3593         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
3594
3595 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3596
3597         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
3598         is no longer needed.
3599
3600         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
3601         non register sized integer arguments.
3602         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
3603         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
3604         emit_memcpy2 ().
3605
3606         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
3607         CEE_MONO_RETOBJ.
3608         
3609         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
3610         two a binop with different sized arguments is emitted.
3611
3612         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
3613         instruction in the ins==NULL case.
3614
3615 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3616
3617         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
3618
3619         * mini-x86.c: Fix osx build.
3620
3621         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
3622         opcodes as well.
3623
3624         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
3625         instruction for non int sized variables.
3626
3627         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
3628         implementation.
3629
3630 2008-07-23  Robert Jordan  <robertj@gmx.net>
3631
3632         * method-to-ir.c: Fix MSVC build.
3633
3634 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3635
3636         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
3637         a non int sized type, widen it to an int since newer versions of gcc seem to
3638         generate code which needs this.
3639
3640         * ssa2.c abcremoval2.c: Fix warnings.
3641
3642         * *: Merge the Linear IR branch.
3643
3644         The original branch is at trunk/branches/vargaz/mini-linear-il, and
3645         the ChangeLog file there describes all the changes done over the years. 
3646         Further documentation can be found at www.mono-project.com/Linear_IL.
3647
3648 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3649
3650         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3651           The float param registers and other param registers must be the 
3652           same index on Windows x64.
3653
3654         Contributed under MIT/X11 license.
3655
3656 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
3657
3658         * mini.c: Make the previous fix GC safe.
3659
3660 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
3661
3662         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
3663
3664 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3665
3666         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
3667           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
3668           ArgValuetypeAddrInIReg instead.
3669
3670         Contributed under MIT/X11 license.
3671
3672 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
3673
3674         * mini-codegen.c (get_register_spilling): Fix a warning.
3675
3676 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
3677
3678         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
3679         for types which the initialization fails. Raises the provided exception
3680         at the right stop after cleanup.
3681
3682 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
3683
3684         * aot-compiler.c: Free most of the memory allocated during compilation.
3685
3686         * mini.c (mini_parse_debug_options): Fix a leak.
3687         
3688         * mini.c (mini_method_compile): Don't add the method to the jit info tables
3689         during aot compilation.
3690
3691 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
3692
3693         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
3694         it has too much register pressure.
3695
3696 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
3697
3698         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
3699
3700 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3701
3702         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3703         on x86.
3704
3705         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3706         on amd64 similar to the way it is done on arm.
3707
3708         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3709
3710         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
3711         consistency, normalize error messages, avoid loading aot-only modules in
3712         normal mode.
3713
3714         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
3715         for consistency.
3716
3717         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
3718
3719 2008-07-11  Martin Baulig  <martin@ximian.com>
3720
3721         * debug-debugger.h
3722         (MonoDebuggerInfo): Add `interruption_request'.
3723
3724 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3725
3726         * aot-compiler.c (emit_plt): Remove some dead code.
3727
3728         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
3729
3730         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
3731         return the plt info offset belonging to a given plt entry.
3732
3733         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
3734         mono_aot_get_plt_info_offset.
3735         
3736         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
3737         similar to the amd64 code by makeing jumps through a separate jump table 
3738         instead of embedding the jump addresses into the code.
3739
3740 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
3741
3742         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
3743         method.
3744
3745 2008-07-10  Martin Baulig  <martin@ximian.com>
3746
3747         * mini.c (mini_method_compile): Disable generics sharing when
3748         running in the debugger.
3749
3750 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3751
3752         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
3753
3754         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
3755         the local register allocator from running out of registers on x86 when 
3756         using aot.
3757
3758 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
3759
3760         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
3761         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
3762         C4146.
3763
3764         Contributed under MIT/X11 license.
3765
3766 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3767
3768         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
3769         speed up the assembler.
3770
3771 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3772
3773         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
3774         support.
3775
3776         * mini.c: Move the soft float handling macros a bit earlier, add 
3777         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
3778         place.
3779
3780         * mini.h: Add prototype for mono_arch_fixup_jinfo.
3781
3782         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
3783         read-only to help catch code allocation requests.
3784         
3785         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
3786         and turn it off when using --aot-only or when compiling with --aot=full.
3787
3788         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
3789         jump table for switches from the normal domain mempool, not the code
3790         manager.
3791
3792         * mini-trampolines.c (get_unbox_trampoline): New function to return an
3793         unbox trampoline which handles aot-only mode too.
3794
3795         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
3796         an AOTed unbox trampoline.
3797
3798         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
3799
3800 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3801
3802         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
3803         ""
3804
3805         Contributed under MIT/X11 license.
3806
3807 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3808
3809         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
3810           the unwind information for the method at the end of the allocated block.
3811           
3812         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
3813           MonoCompileArch to hold the unwind info for SEH on Winx64
3814         
3815         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
3816           frame pointer info for the method being compiled.
3817           
3818         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
3819           the call to mono_exception_from_token.
3820           
3821         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
3822           storing the method prolog information in a format that the Winx64 SEH can understand.  This
3823           information is stored a the end of the method block because it is all 32-bit offset based.
3824
3825         Contributed under MIT/X11 license.
3826
3827 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3828
3829         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
3830
3831         * wapihandles.c: Fix warnings.
3832
3833         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
3834         mode.
3835
3836         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
3837         mono_jit_compile_method in aot-only mode since that calls the type 
3838         initializer.
3839         
3840         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
3841         get_delegate_invoke_impl in aot-only mode.
3842
3843         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
3844
3845 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
3846
3847         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
3848
3849         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
3850         is on by default.
3851
3852         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
3853
3854         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
3855         init trampoline from the AOT file as well.
3856
3857         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
3858         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
3859         code.
3860
3861         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
3862         mono_init.
3863
3864         * exceptions-amd64.c: Add _full variants for the remaining exception code
3865         creation functions as well, allow emission of relocatable code, remove
3866         caching since that is now done by the caller.
3867
3868         * mini-exceptions.c: Add _full variants for the remaining exception code
3869         creation functions as well, add aot-only support.
3870
3871         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
3872         if we can determine a proper token for them.
3873         (add_wrappers): Add a few more wrappers.
3874         (emit_method_code): Remove some dead code.
3875         (emit_trampolines): Emit exception code too.
3876
3877         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
3878
3879         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
3880         mono_array_new_va which avoids varargs.
3881
3882         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
3883
3884         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
3885         mono_arch_create_specific_trampoline () in all places.
3886
3887         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
3888         a bit so it can be used for other things as well.
3889         
3890         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
3891         on demand as well.
3892
3893         * exceptions-amd64.c: Rename the caching from the exception code creation
3894         functions, it is done by the caller instead.
3895         
3896         * exceptions-amd64.c: Change the signature of the exception code creation 
3897         functions to allow the creation of relocatable code later.
3898
3899         * mini-exceptions.c: Add a set of functions to query the various 
3900         runtime-generated exception functions.
3901
3902         * mini.c mini-exceptions.c: Use the newly added functions instead of the
3903         mono_arch_.. () functions.
3904         
3905 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3906
3907         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
3908
3909         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
3910
3911         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
3912         (mini_get_vtable_trampoline): Ditto.
3913
3914         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
3915         code in the AOT case by returning the code size and a list of relocations to
3916         the caller.
3917
3918         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
3919
3920 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
3921
3922         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
3923           clean the stack.
3924
3925         Contributed under MIT/X11 license.
3926
3927 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3928
3929         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
3930         so the buffer size can be computed correctly. Fixes #404735.
3931
3932         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
3933         normally as cfg->debug_info is already freed.
3934
3935 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
3936
3937         * mini-amd64.c: For calls returning vtypes in registers, don't store
3938         the return address on the stack, instead allocate a separate local for
3939         it. Fixes #404729.
3940
3941 2008-07-05  Mark Probst  <mark.probst@gmail.com>
3942
3943         * mini-trampolines.c, mini.h: Add an argument to
3944         mono_create_jit_trampoline_in_domain() for turning off the adding
3945         of the sync wrapper.
3946
3947         * mini.c: Use the JIT trampoline without sync instead of
3948         ldftn_nosync in static RGCTX invoke wrappers so that the call can
3949         be patched.
3950
3951 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3952
3953         * driver.c: Turn on GSHARED optimization by default.
3954
3955 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
3956
3957         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
3958         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
3959
3960         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
3961         create a variant of the generic trampoline code callable from AOTed trampolines.
3962
3963         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
3964         trampoline code callable from AOTed trampolines.
3965
3966         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
3967
3968 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3969
3970         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
3971         pass-through manner.
3972
3973         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
3974         and don't fail sharing for them anymore.
3975
3976         * mini-exceptions.c: Handle exceptions in shared generic methods.
3977
3978         * generic-sharing.c: When checking the context of a generic
3979         method, also check its class's context.  Don't treat wrappers as
3980         sharable.
3981
3982         * mini-trampolines.c: Some code factored out to
3983         metadata/generic-sharing.c.  Handle the MRGCTX case.
3984
3985         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
3986         we must deal with the method being of another instantiation of the
3987         class.  Add static rgctx invoke wrappers to generic methods.
3988
3989 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3990
3991         * mini.c: Provide all jit infos of generic shared methods with a
3992         generic jit info.
3993
3994         * mini-exceptions.c: Handle the new situation that a generic info
3995         might be available, but not info about the this/vtable/mrgctx
3996         variable.
3997
3998 2008-07-03  Mark Probst  <mark.probst@gmail.com>
3999
4000         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
4001         generic methods.
4002
4003 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
4004
4005         * dominators.c (check_dominance_frontier): Fix a warning.
4006
4007         * mini.h: Add some missing prototypes.
4008
4009         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
4010
4011         * driver.c (mono_jit_init_version): Correct the comments since the first
4012         argument should be the name of the root domain, not a filename.
4013
4014         * aot-runtime.c (make_writable): Error out if this is called while running
4015         with --aot-only.
4016         (load_aot_module): Ditto.
4017
4018         * aot-compiler.c: Really fix the computation of method indexes.
4019
4020         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
4021         optimizations as this is no longer called frequently.
4022
4023         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
4024         method and the invoke impl code and pass it to the delegate trampoline instead of
4025         just the delegate class.
4026
4027 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4028
4029         * aot-compiler.c: Fixup the computation of method indexes.
4030         (add_wrappers): Create the base methods of the runtime invoke wrappers using
4031         the method builder infrastructure.
4032
4033         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
4034         has no header.
4035
4036         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
4037         mode, load the method right away instead of creating a trampoline.
4038
4039         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
4040
4041         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
4042         some checks a bit.
4043
4044 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4045
4046         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
4047         (mono_aot_load_method): Use method_index instead of method->token.
4048
4049         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
4050         can handle icalls etc. properly.
4051
4052         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4053
4054         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
4055
4056         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
4057         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
4058         JIT_ICALL_ADDR patch type.
4059
4060         * patch-info.h: Add JIT_ICALL_ADDR patch type.
4061
4062         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
4063         request flag.
4064         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
4065
4066         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
4067
4068 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4069
4070         * mini.c: Use domain->jit_code_hash_lock for controlling access to
4071         domain->jit_code_hash.
4072
4073 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
4074
4075         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
4076
4077 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
4078
4079         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
4080         get_this_arg_from_call, let it compute it when needed.
4081
4082         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
4083         gsctx from code only when needed.
4084
4085         * mini-trampolines.c (get_generic_context): Rename this to 
4086         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
4087         it can be called by the arch backends.
4088
4089         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
4090
4091 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
4092
4093         * driver.c (mono_main): Add experimental --aot-only command line option.
4094
4095         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
4096         set.
4097
4098 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4099
4100         * driver.c (DllMain): Remove mono_module_handle.
4101
4102         Contributed under MIT/X11 license.
4103
4104 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
4105
4106         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
4107         for emitting methods which are not in the source assembly. Detect and report
4108         failure of assembling+linking.
4109         
4110         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
4111
4112         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
4113
4114 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
4115
4116         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
4117
4118 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
4119
4120         * mini.h: Remove some obsolete prototypes.
4121
4122         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
4123
4124 2008-06-24  Mark Probst  <mark.probst@gmail.com>
4125
4126         * mini.c (get_object_generic_inst): Variable-sized arrays are not
4127         supported by Visual Studio, so use alloca().
4128
4129 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
4130
4131         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
4132         Fixes #402585.
4133
4134 2008-06-23  Mark Probst  <mark.probst@gmail.com>
4135
4136         * mini.c: Fail sharing of a generic method if it contains an open
4137         catch clause (because we don't pass MRGCTXs yet).
4138
4139 2008-06-23  Mark Probst  <mark.probst@gmail.com>
4140
4141         * mini.c: When compiling a method with generic sharing, insert the
4142         method instantiated with an all-Object generic context into the
4143         jit info table, instead of the context of the first instantiation
4144         of the method we happen to compile.
4145
4146 2008-06-18  Martin Baulig  <martin@ximian.com>
4147
4148         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
4149         `major_version' and `minor_version'.
4150
4151 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4152
4153         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
4154         mono_method_is_generic_sharable_impl() takes an additional
4155         argument specifying whether to treat type variables as reference
4156         types.
4157
4158 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4159
4160         * mini.h: Removed obsolete prototypes.
4161
4162 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4163
4164         * mini.c: Don't fail generic sharing for initobj and sizeof - we
4165         already handle them.
4166
4167 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4168
4169         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
4170         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
4171         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
4172         tramp-x86.c: Added a MonoGenericContext* argument to
4173         mono_arch_get_unbox_trampoline() so that it can call other
4174         functions which require it.
4175
4176 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4177
4178         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
4179         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
4180         mono_arch_get_this_arg_from_call() takes a
4181         MonoGenericSharingContext* as well.
4182
4183 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4184
4185         * mini.c: Factor out code for emitting unbox into emit_unbox() and
4186         implement generic sharing of unbox.
4187
4188 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4189
4190         * mini.c: Don't compute the vtable to determine whether a field is
4191         special static, because it might not work for open types.
4192
4193 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4194
4195         * mini.c: Removed the unused token_type and token_source arguments
4196         from get_runtime_generic_context_ptr().
4197
4198 2008-06-17  Marek Habersack  <mhabersack@novell.com>
4199
4200         * mini.c (ADD_BINOP): fix the build
4201
4202 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
4203
4204         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
4205         a widening op.
4206
4207 2008-06-16  Mark Probst  <mark.probst@gmail.com>
4208
4209         * mini.h: Removed class relations enum that's not used anymore.
4210
4211 2008-06-16  Mark Probst  <mark.probst@gmail.com>
4212
4213         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
4214
4215         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
4216         the lazy fetch trampoline access code.
4217
4218 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
4219
4220         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
4221
4222 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
4223
4224         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
4225
4226         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
4227
4228         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
4229
4230 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4231
4232         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
4233         intrinsics.
4234
4235         * mini-ops.h: Add MIN/MAX_UN opcodes.
4236
4237         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
4238         intrinsics.
4239
4240         * basic-math.cs: Add more min/max tests.
4241
4242         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
4243
4244 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4245
4246         * mini.c: Small fix in the prologue of emit_castclass.
4247
4248 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4249
4250         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
4251
4252         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
4253         do not work even for unsigned types. Fixes #400014.
4254
4255         * basic-math.cs: Add regression tests for unsigned Min/Max.
4256
4257 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4258
4259         * mini.c: Added additional context_used argument to several
4260         functions, which will be needed for sharing generic methods.  Use
4261         GET_RGCTX macro wherever appropriate.  Declare only one
4262         context_used in mono_method_to_ir().
4263
4264 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4265
4266         * mini.c, generic-sharing.c: Removed generic class relations.
4267
4268         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
4269         functions due to MRGCTX changes.
4270
4271 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4272
4273         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
4274         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
4275         with calculated IMT.
4276
4277         * mini.c: Generic sharing of calls via generic interfaces.
4278
4279         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
4280         generic method with non-constant MonoGenericContext*.  Instead,
4281         the context is taken out of the method itself.
4282
4283 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4284
4285         * mini.c: Generic sharing of ldvirtftn.
4286
4287 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4288
4289         * mini.c: Generic sharing of ldftn.
4290
4291 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4292
4293         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
4294
4295 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4296
4297         * mini.c: Generic sharing of the special case of ldtoken followed
4298         by a call to GetTypeFromHandle.
4299
4300 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4301
4302         * mini.c: Generic sharing of box for nullable types.
4303
4304 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4305
4306         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
4307         are passed on the stack. Fixes #324807.
4308
4309 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
4310
4311         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
4312         for the ArgValuetypeAddrInIReg case.
4313
4314         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
4315         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
4316
4317         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
4318         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
4319         local variable and pass the local variable by reference to the called method.
4320           
4321         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
4322         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
4323
4324         Contributed under MIT/X11 license.
4325
4326 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
4327
4328         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
4329
4330         * debug-mini.c (mono_debug_print_vars): Release memory after printing
4331         everything.
4332
4333 2008-06-10  Martin Baulig  <martin@ximian.com>
4334
4335         * debug-mini.c
4336         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
4337
4338 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
4339
4340         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
4341         possible error when no arguments are passed.
4342
4343         Contributed under MIT/X11 license.
4344
4345 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
4346
4347         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
4348         where the file name is NULL.
4349
4350 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
4351
4352         * mini.c: Fix s390 build.
4353
4354 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
4355
4356         * trace.c (mono_trace_parse_options): Fix warnings.
4357
4358         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
4359
4360 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
4361
4362         * mini.c (remove_block_if_useless): Avoid printing the method name.
4363         
4364         * mini.c: Remove needless setting of ins->cil_code which is now done by 
4365         MONO_INST_NEW.
4366
4367         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
4368         LMF. Not yet used.
4369
4370         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
4371         translated code after it has been patched.
4372
4373 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
4374
4375         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
4376         avoid problems during code patching on SMP systems.
4377         (emit_call): Avoid adding a patch info which is already added by 
4378         emit_call_body.
4379         (mono_arch_emit_exceptions): Ditto.
4380
4381 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
4382
4383         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
4384         MONO_TYPE_ISSTRUCT already checks for it.
4385
4386 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
4387
4388         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
4389           structs with floats on Winx64 the float registers are not used.  
4390           The integer registers are always used..
4391         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
4392           only one register will be used and only if the size of the struct 
4393           is 1,2,4, or 8 bytes.
4394
4395         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
4396           to work for Winx64.
4397
4398         Contributed under MIT/X11 license.
4399
4400 2008-06-05  Martin Baulig  <martin@ximian.com>
4401
4402         * debug-debugger.c (debugger_lookup_class): Also call
4403         mono_class_setup_methods() here; we're only called from RTI.
4404
4405 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
4406
4407         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
4408         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
4409         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
4410         Post-process object files and add dtrace-generated object, if necessary.
4411
4412         Contributed under MIT/X11 license.
4413
4414 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4415
4416         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
4417         element class.
4418
4419         * mini.c: Generic sharing for unbox.any and castclass.
4420
4421 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4422
4423         * mini.c: Ignore tailcall prefix in shared generic code and when
4424         doing calls which require a vtable/rgctx argument.
4425
4426 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4427
4428         * mini.c: Don't free the JIT info.
4429
4430         * driver.c: Changes in the JIT info table testing code.
4431
4432 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
4433
4434         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
4435         interruption. Fix some warnings.
4436
4437         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
4438         interruption_checkpoint.
4439
4440 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
4441
4442         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
4443         from embedding applications.
4444
4445 2008-06-02  William Holmes  <billholmes54@gmail.com>
4446
4447         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
4448           reserving 32 bytes on the stack when making calls. 
4449
4450         Contributed under MIT/X11 license.
4451
4452 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
4453
4454         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
4455         the linear IL branch.
4456
4457         * driver.c: Print out more information for --version on arm.
4458
4459 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
4460
4461         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
4462         bb_exit instead, since out of line bblocks might not actually be emitted
4463         out-of-line.
4464         
4465         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
4466         maximum epilog size for out of line bblocks if tracing is enabled.
4467
4468         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
4469
4470 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
4471
4472         * arrays.cs: Regression tests for allocating arrays with negative sizes.
4473
4474 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
4475
4476         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
4477         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
4478         opcodes.
4479
4480 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
4481
4482         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
4483         the 'value' to store is a constant.
4484
4485         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
4486
4487         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
4488         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
4489
4490 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
4491
4492         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
4493         for accessing method->generic_container.
4494
4495 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
4496
4497         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
4498         
4499         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
4500
4501         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
4502
4503         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
4504         fails.
4505
4506 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
4507
4508         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
4509
4510         * mini.c: Handle the case when mono_class_vtable () fails.
4511
4512 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
4513         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
4514         the stat profiler.
4515
4516 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4517
4518         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
4519         together with domain sharing.
4520
4521 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4522
4523         * mini.c: Treat callvirts to final methods like non-virtual calls
4524         when doing generic sharing, i.e. look them up in the runtime
4525         generic context.
4526
4527 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4528
4529         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
4530         with computed types (for generic sharing).
4531
4532         * mini.c: Generic sharing for mkrefany and refanyval.
4533
4534 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
4535
4536         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
4537         possible.
4538
4539         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
4540         the generic sharing code.
4541         
4542         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
4543         when needed.
4544
4545 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4546
4547         * mini.h: Remove the declaration of mono_aot_init_vtable ().
4548
4549 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
4550
4551         * driver.c: updated copyright date
4552
4553 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4554
4555         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
4556         needed.
4557
4558 2008-05-19  Martin Baulig  <martin@ximian.com>
4559
4560         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
4561         pointing to the new `_mono_debug_using_mono_debugger' variable.
4562
4563         * driver.c
4564         (mono_main): Check mono_debug_using_mono_debugger() rather than
4565         the `MONO_INSIDE_MDB' environment variable to check whether we're
4566         inside the debugger.
4567
4568 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
4569
4570         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
4571         argument.
4572
4573 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4574
4575         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
4576
4577         * mini.c: Added mini_assembly_can_skip_verification. This
4578         function checks if the assembly requested to skip verification. 
4579         Fixes part of #387274.
4580
4581 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
4582
4583         * mini.c (mini_get_method): Disable the check for open generic classes when
4584         using generic sharing.
4585
4586         * generics.cs: Add a test for #387034.
4587
4588         * mini.c (mini_get_method): Check whenever the method class is an open generic
4589         type, and return NULL in that case, causing a verification error. Fixes
4590         #384123.
4591
4592 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4593
4594         * driver.c (mono_main): Revert r102623. The right
4595         thing to do is to enable the verifier under verifiable
4596         unless a --security flag was passed.
4597
4598         We need this non-trivial behavior for --verify-all otherwise
4599         mcs-compileall won't be able to use it. As it needs everything to
4600         be verified under validil.
4601
4602 2008-05-06  Martin Baulig  <martin@ximian.com>
4603
4604         Fix #383749.
4605
4606         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
4607         (mono_debugger_thread_cleanup): Likewise.
4608         (mono_debugger_extended_notification): Likewise.
4609
4610 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4611
4612         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
4613         against both inflated and non-inflated methods. We need to check against the
4614         generic definition for cases where the instantiated method is not visible.
4615         We need to check against the inflated types for cases where the instantiation
4616         changes any super type. This fixes #382986.
4617
4618         Note that this doesn't need to be applied to other parts of mono_method_to_ir
4619         that check for visibiliy as generic params only appears as the type subject
4620         of tokens on call opcodes. Field manipulation and ldftn must always
4621         target an exact type.
4622
4623 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4624
4625         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
4626         if no related --security flag is passed.
4627
4628 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4629
4630         * mini-arch.h: Prepare support for ppc64.
4631
4632         Contributed under MIT/X11 license.
4633
4634 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4635
4636         * aot-runtime.c: Prepare support for ppc64.
4637
4638         Contributed under MIT/X11 license.
4639
4640 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4641
4642         * mini-ops.h: Prepare support for ppc64.
4643
4644         Contributed under MIT/X11 license.
4645
4646 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
4647
4648         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
4649
4650         Contributed under MIT/X11 license.
4651
4652 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
4653
4654         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
4655         assemblies, since aot_name is not a full path, causing us to load MS.NET 
4656         assemblies on windows.
4657
4658 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
4659
4660         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
4661         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
4662         * main.c: Use UTF-8 encoded command line instead of Windows default code
4663         page on Windows to support Unicode.
4664         * driver.c (DllMain): New function for mixed-mode assembly support.
4665         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
4666         export __stdcall functions without decoration.
4667
4668         Contributed under MIT/X11 license.
4669
4670 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4671
4672         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
4673         saving it very early.
4674
4675 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4676
4677         * mini.h, mini.c: Lots of code for accessing the old RGCTX
4678         deleted.  The only way to access the new RGCTX is via the
4679         trampline.
4680
4681         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
4682         vtable instead of the RGCTX to static methods.
4683
4684         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
4685         accessing the new RGCTX.
4686
4687         * generic-sharing.c: There is no separation between self, type
4688         arguments and other types in the RGCTX anymore.
4689
4690 2008-04-25  Jonathan Chambers <joncham@gmail.com>
4691
4692         * mini-amd64.c (add_general): Remove previous stack adjustment.
4693         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
4694         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
4695         for 32 bytes of stack space reserved for all calls.
4696         
4697         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
4698         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
4699         adjustment.
4700         
4701         Code contributed under MIT/X11 license.
4702
4703 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
4704
4705         * mini.c (mini_method_verify): Only verify non-inflated methods, check
4706         against the root definition, peeling out method and type instantiations.
4707         Cache verify success results, code that fails verification is still
4708         checked multiple times.
4709
4710 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
4711
4712         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
4713
4714 2008-04-23  Jonathan Chambers <joncham@gmail.com>
4715
4716         * mini-amd64.c (add_general): Always increment stack on Win64.
4717         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
4718         on Win64.
4719         
4720         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
4721         stack based argument handling on Win64.
4722         
4723         Code contributed under MIT/X11 license.
4724
4725 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
4726
4727         * Makefile.am (version.h): Add support for git-svn.
4728
4729 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
4730
4731         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
4732         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
4733         avoiding allocations and libc functions which might deadlock.
4734         
4735         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
4736         'no-gdb-backtrace' option is set.
4737
4738         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
4739
4740         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
4741
4742 2008-04-21  Martin Baulig  <martin@ximian.com>
4743
4744         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
4745         and `get_lmf_addr'; `notification_address' is no longer a pointer.
4746
4747 2008-04-21  Martin Baulig  <martin@ximian.com>
4748
4749         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
4750         `thread_vtable', `event_handler_ptr' and `event_handler'.
4751
4752 2008-04-21  Martin Baulig  <martin@ximian.com>
4753
4754         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
4755         allows delayed initialization of the `executable_code_buffer' when
4756         attaching.
4757
4758 2008-04-21  Martin Baulig  <martin@ximian.com>
4759
4760         * mini.h (mono_debugger_create_notification_function): Removed.
4761         * tramp-*.c (mono_debugger_create_notification_function): Removed.
4762
4763         * mdb-debug-info64.s
4764         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4765
4766         * mdb-debug-info32.s
4767         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4768
4769         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
4770         currently only works on x86 and x86_64, so don't create it on ppc.
4771
4772 2008-04-21  Martin Baulig  <martin@ximian.com>
4773
4774         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
4775
4776         * mini.c
4777         (mini_method_compile): In the fp elimination check, check
4778         `debug_options.mdb_optimizations' in addition to
4779         mono_debug_using_mono_debugger().       
4780
4781         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
4782         disable some JIT optimizations which are only disabled when
4783         running inside the debugger.
4784         Added `--help-debug' option to describe the debugging options.
4785         (parse_debug_options): New static function to parse the `--debug'
4786         options, so we can easily add more stuff in future.
4787
4788 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
4789
4790         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
4791         the method has no body.
4792
4793 2008-04-19  Jonathan Chambers <joncham@gmail.com>
4794
4795         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
4796         assembly is not allowed in MSVC 64-bit compiler. 
4797         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
4798         as we get floating point exceptions everywhere.
4799         
4800         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
4801         correctly align arguments for call to throw_exception.
4802         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
4803         
4804         Code contributed under MIT/X11 license.
4805
4806 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
4807
4808         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
4809
4810 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
4811
4812         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
4813
4814         * mini-amd64.c (NEW_INS): Set cil_code.
4815
4816         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
4817         from mini-amd64.c so all debugger related logic is in one place.
4818
4819         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
4820         later won't have a random ip assigned to them.
4821
4822 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
4823
4824         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
4825         the arch specific function initializes code_size.
4826         (mono_create_delegate_trampoline): Ditto.
4827
4828         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
4829         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
4830         platforms.
4831
4832         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
4833         running under the debugger.
4834
4835         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
4836         debugger.
4837
4838         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
4839         debugger. Also move the disabling of optimizations here from driver.c.
4840         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
4841         debugger.
4842
4843         * mini.h (MonoCompile): Add a few new flags.
4844
4845 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
4846
4847         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
4848         so the cil_code field of created MonoInst's is properly set.
4849         (mini_select_instructions): Ditto.
4850
4851         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
4852         (MONO_INST_NEW_CALL): Ditto.
4853
4854         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
4855         in many places so the ins->cil_code field is properly initialized.
4856
4857         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
4858         place.
4859
4860 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
4861
4862         * mini.c (mini_method_compile): Print a different message when compiling a 
4863         shared method.
4864         
4865         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
4866         > 1.
4867
4868 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4869
4870         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
4871         SSE2 instructions.
4872
4873         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
4874         
4875 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4876
4877         * mini.c (handle_stack_args): Make this return void since its return value was
4878         never used. Also set cfg->unverifiable for invalid IL instead of calling
4879         G_BREAKPOINT ().
4880
4881 2008-04-10  Mark Probst  <mark.probst@gmail.com>
4882
4883         * mini.c: Make sure "this" is live in catch clauses with type
4884         variables in shared generic code.
4885
4886 2008-04-08  Mark Probst  <mark.probst@gmail.com>
4887
4888         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
4889         generic_class_is_reference_type() to ensure the proper behaviour
4890         when sharing generic code and the type in question is a type
4891         argument.
4892
4893 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4894
4895         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
4896         race conditions when printing thread dumps. Fixes #377738.
4897
4898 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
4899         
4900         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
4901         shows up when both MonoInst arguments can cause aliasig.
4902         There is likely no way in the current JIT to trigger this problem, but
4903         it showed up in the development of generics sharing, when in a new
4904         opcode both args of an OP_GROUP can be aliases (addresses of a local).
4905         When the generics sharing code will be committed, its tests will be
4906         valid also for this bug.
4907
4908 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4909
4910         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
4911         PATCH_INFO_METHOD.
4912
4913         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
4914         NULL.
4915
4916 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
4917
4918         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
4919         use a more detailed exception message for InvalidCastException.
4920
4921         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
4922
4923         * driver.c (mono_main): Add --debug=casts option to turn on better 
4924         InvalidCastException message details.
4925
4926         * mini.c (mini_get_debug_options): New helper function to return the address of
4927         the debug_options variable.
4928
4929         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
4930         the jit_tls TLS variable.
4931
4932         * mini.c (mono_jit_tls): New TLS variable.
4933
4934         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
4935         option is used.
4936
4937 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
4938
4939         * mini.h: Removed verifer related stuff. This code was moved to verify.c
4940
4941         * mini.c: Removed verifer related stuff, code moved to verify.c.
4942
4943         * driver.c: Using code from verify.c instead of mini.c.
4944
4945 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
4946
4947         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
4948         longer valid.
4949
4950 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
4951
4952         * mini.c (check_for_method_verify): Enabling verification of
4953         corlib if mono_verify_all is set. Bugs in the verifier preventing that
4954         have been fixed.
4955
4956 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
4957
4958         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
4959         caller saved registers as well.
4960         
4961         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
4962         saved registers as well.
4963
4964 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
4965
4966         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
4967
4968         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
4969         code.
4970
4971 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
4972
4973         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
4974         to get_call_info.
4975         (get_call_info): Take a gsctx argument instead of 'cfg'.
4976
4977 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
4978
4979         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
4980         mono_verify_all is set.
4981
4982         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
4983
4984         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
4985
4986 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
4987
4988         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
4989         an exception.
4990
4991         * driver.c mini.c mini.h: Add a --verify-all development option to test the
4992         verifier and the code generated by the compiler.
4993
4994 2008-03-25  Mark Probst  <mark.probst@gmail.com>
4995
4996         * mini.c: Generic sharing of the non-nullable case of the box
4997         instruction.
4998
4999 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
5000
5001         * inssel.brg: Fix the build.
5002
5003         * iltests.il.in: Add a test for lconv.ovf.u8.un.
5004
5005 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
5006
5007         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
5008         Array:Address. Fixes #372410.
5009
5010         * iltests.il.in: New tests for readonly prefix.
5011
5012 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
5013
5014         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
5015         mini-trampolines.c.
5016
5017         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
5018         mini-exceptions.c.
5019
5020         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
5021         
5022         * mini.c (mono_decompose_op_imm): New helper function.
5023
5024         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
5025         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
5026         return value.
5027
5028         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
5029         mono_arch_output_basic_block. Fix warnings.
5030
5031         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
5032         for now.
5033
5034 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
5035
5036         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
5037         since the extra frame is now detected automatically inside the loop.
5038
5039         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
5040         opts which are now in mono_peephole_ins ().
5041         
5042         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
5043
5044         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
5045         frames and skip duplicate managed-to-native frames. Fixes #367665.
5046
5047         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
5048         opts which are now in mono_peephole_ins ().
5049         (mono_arch_peephole_pass_2): Ditto.
5050
5051         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
5052
5053         * mini-codegen.c (mono_peephole_ins): New helper function containing the
5054         arch independent peephole optimizations.
5055
5056         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
5057         opts which are now in mono_peephole_ins ().
5058
5059         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
5060         
5061         * mini-s390.c (mono_arch_output_basic_block): Fix build.
5062
5063         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
5064         pattern.
5065
5066         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
5067         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
5068         opcode. 
5069
5070 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
5071
5072         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
5073         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
5074         return value.
5075
5076         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
5077         mono_arch_output_basic_block. Fix warnings.
5078
5079 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5080
5081         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
5082         conv.ovf.u.un.
5083
5084 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5085
5086         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
5087         conv.ovf.u.un.
5088
5089         * iltests.il: Add new tests.
5090
5091 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
5092
5093         * mini.c: Removed Windows version macros.
5094
5095 2008-03-20  Mark Probst  <mark.probst@gmail.com>
5096
5097         * generic-sharing.c: Put reflection types in the extensible part
5098         of the runtime generic context.
5099
5100         * mini.c: Generic sharing of the GetTypeHandle special case of the
5101         ldtoken instruction.
5102
5103 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5104
5105         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
5106
5107         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
5108         
5109         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
5110         consistency with the other version on the linear IR branch.
5111
5112         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
5113
5114         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
5115
5116         * iltests.il.in: Add new tests.
5117
5118 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
5119
5120         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
5121
5122         * iltests.il.in: Add new tests.
5123
5124 2008-03-19  Mark Probst  <mark.probst@gmail.com>
5125
5126         * mini.c: Two variables with the same name were declared in
5127         nesting contexts and one wasn't initialized.  Fixed.
5128
5129 2008-03-19  Mark Probst  <mark.probst@gmail.com>
5130
5131         * mini.c: Generic sharing of the initobj instruction.
5132
5133 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
5134
5135         * mini.c: make the test to optimize ldtoken from typeof() more
5136         precise.
5137
5138 2008-03-18  Mark Probst  <mark.probst@gmail.com>
5139
5140         * mini.c: Generic sharing of the initobj instruction for reference
5141         types.
5142
5143 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5144
5145         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
5146         the mono_breakpoint_clean_code() code to perform bound checks.
5147
5148 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
5149
5150         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
5151         mono_arch_patch_callsite() to include the start of the managed method
5152         to be able to perform bound checks.
5153
5154 2008-03-17  Mark Probst  <mark.probst@gmail.com>
5155
5156         * mini.c: Generic sharing for the isinst instruction.
5157
5158 2008-03-17  Mark Probst  <mark.probst@gmail.com>
5159
5160         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
5161         inssel-long32-mips.brg: Added opcodes for doing indirect calls
5162         with the runtime generic context argument.
5163
5164         * mini.c: Share calls to several types of unsharable methods by
5165         putting the address of the method code in the runtime generic
5166         context and doing an indirect call.
5167
5168         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
5169         to switches.
5170
5171 2008-03-16  Mark Probst  <mark.probst@gmail.com>
5172
5173         * generic-sharing.c: Change due to a change in the runtime genric
5174         context API.
5175
5176 2008-03-15  Martin Baulig  <martin@ximian.com>
5177
5178         * tramp-x86.c
5179         (mono_arch_nullify_class_init_trampoline): Add call to
5180         mono_breakpoint_clean_code() to make things work when running
5181         inside the debugger.
5182
5183         * tramp-amd64.c
5184         (mono_arch_nullify_class_init_trampoline): Add call to
5185         mono_breakpoint_clean_code() to make things work when running
5186         inside the debugger.
5187
5188 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5189
5190         * inssel-long.brg (reg): Fix 64 bit build.
5191
5192 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5193
5194         * mini.c, mini.h: Share static generic code by passing it an
5195         implicit argument pointing to the runtime generic context.
5196
5197         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
5198         inssel-long32-mips.brg: New opcodes for calling shared static,
5199         which need to be passed the runtime generic context.
5200
5201         * mini-amd64.c, mini-x86.c: Save the runtime generic context
5202         argument on the stack in the prologue if needed.  New function for
5203         finding the runtime generic context argument from the registers
5204         saved by the trampoline.
5205
5206         * mini-amd64.h, mini-x86.h: Specify which register to use for the
5207         runtime generic context argument.
5208
5209         * tramp-amd64.c: Also restore the register used for the runtime
5210         generic context argument.
5211
5212         * mini-trampoline.c: Resolve shared static calls by consulting the
5213         runtime generic context via the new argument.
5214
5215         * generic-sharing.c: Add an argument to sharability-checking
5216         functions that specifies whether type variables should be treated
5217         as sharable type arguments.
5218
5219         * inssel-x86.brg: Removed a superfluous, buggy rule.
5220
5221         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
5222         to switches.
5223
5224 2008-03-14  Martin Baulig  <martin@ximian.com>
5225
5226         * debug-debugger.c (main_thread_handler): Call
5227         mono_runtime_run_main() without sending any notifications.
5228
5229         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
5230
5231 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5232
5233         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
5234
5235 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5236
5237         * tramp-x86.c: Fixed register restore offsets in the trampoline
5238         code for ECX and EDX.
5239
5240 2008-03-12  Geoff Norton  <gnorton@novell.com>
5241
5242         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
5243         different ucontext_t implementations.
5244         * exceptions-arm.c: Use the above defines to get exceptions working on 
5245         iPhone (based on a patch by Luke Howard lukeh@padl.com)
5246         * mini-arm.c: Implement iPhone icache support (based on a patch by
5247         Luke Howard lukeh@padl.com)
5248
5249 2008-03-12  Mark Probst  <mark.probst@gmail.com>
5250
5251         * mini.c: Enable generic sharing of calls to non-static
5252         non-interface non-generic non-value-type methods.
5253
5254         * mini-trampolines.c: Resolve calls from shared generic code.
5255
5256 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
5257
5258         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
5259
5260         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
5261
5262 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
5263
5264         * mini.c: some fixes for the AOT compiler.
5265
5266 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5267
5268         * cpu-amd64.md: Add clob:1 to some float opcodes.
5269
5270 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
5271
5272         * mini.h: Added MiniVerifierMode enumeration.
5273
5274         * mini.c: Added mini_verifier_set_mode to control
5275         the usage of the new verifier.
5276
5277         * mini.c (mono_method): Integrated the new verifier.
5278
5279         * driver.c: Extended --security option with validil and
5280         verifiable options to activate the new verifier.
5281
5282 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5283
5284         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
5285         optimization to ctors taking 0 or 2 arguments too.
5286
5287         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
5288         a bit.
5289
5290         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
5291
5292         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
5293
5294 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
5295
5296         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
5297         non-aot case as well.
5298
5299         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
5300
5301         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
5302         changes.
5303
5304         * aot-compiler.c (encode_patch): Ditto.
5305
5306         * mini.h (G_MININT32): Fix the definition of this.
5307
5308 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
5309
5310         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
5311
5312         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
5313
5314 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5315
5316         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
5317         methods returning vtypes in registers.
5318         (mono_arch_allocate_vars): Ditto.
5319
5320         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
5321
5322         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
5323
5324         * generics.cs: Add a test from the linear IR branch.
5325
5326         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
5327
5328         * mini.c (inline_method): Cache failed inline attempts.
5329
5330 2008-03-04  Mark Probst  <mark.probst@gmail.com>
5331
5332         * mini.c: For shared methods of generic classes put the location
5333         of "this" into the MonoGenericJitInfo.
5334
5335         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
5336         register out of a MonoContext by register number.  Add the generic
5337         sharing context as an argument to mono_arch_find_this_argument().
5338
5339         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5340         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
5341         for new arch function.
5342
5343         * mini-exception.c: Handle open exception clauses in shared
5344         generic code.
5345
5346         * mini-trampolines.c: Supply additional argument to
5347         mono_arch_find_this_argument().
5348
5349 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5350
5351         * Makefile.am (regtests): Run the bench.exe tests last.
5352
5353 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
5354
5355         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
5356         a bit.
5357
5358 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
5359
5360         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
5361         with MS.
5362
5363         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
5364         
5365         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
5366
5367         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
5368         whose class has no cctor.
5369
5370         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
5371
5372 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
5373
5374         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
5375         unverified.
5376
5377 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
5378
5379         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
5380         to be in sync with the code on the linear IR branch.
5381
5382         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
5383
5384         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
5385
5386 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
5387
5388         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
5389
5390         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
5391
5392         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
5393
5394         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
5395
5396         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
5397         
5398         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
5399         body.
5400
5401 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
5402
5403         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
5404         OP_LOADR4_MEMBASE emission.
5405
5406         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
5407         (mono_spillvar_offset_float): Ditto.
5408
5409         * mini-mips.c (mono_arch_emit_prolog): Ditto.
5410
5411         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
5412         emission.
5413
5414         * basic-long.cs: Add regression tests for them.
5415
5416         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
5417         use.
5418         (mono_arch_allocate_vars): Fix representation of single-precision float
5419         argument.
5420         (mono_arch_output_basic_block): Ditto.
5421
5422         * inssel-mips.brg: Ditto, remove duplicate items.
5423
5424         * mini-mips.c (emit_load_volatile_arguments): New function to handle
5425         arguments of tail calls as on other platforms.
5426         (mono_arch_output_basic_block): Handle tail calls.
5427
5428         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
5429         register.
5430
5431         * objects.cs (test_5_pass_static_struct): Add test for it.
5432
5433         Contributed under MIT/X11 license.
5434
5435 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
5436
5437         * Makefile.am: Use gmcs for compiling the regression tests.
5438
5439         * *.2.cs *.2.il: Rename to *.cs and *.il.
5440
5441 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
5442
5443         * regalloc.h: Make the vassign array smaller.
5444
5445         * mini.c (mini_method_compile): Remove an unused field in cfg.
5446
5447         * mini-codegen.c: Add a bunch of micro optimizations.
5448
5449 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
5450
5451         * regalloc.h: Remove some unused fields.
5452
5453 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
5454
5455         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
5456
5457         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
5458
5459 2008-02-22  Mark Probst  <mark.probst@gmail.com>
5460
5461         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
5462
5463         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
5464         trampoline: Fetch an entry from the runtime generic context.  If
5465         it's NULL, jump to the actual trampoline to fill the runtime
5466         generic context.  Otherwise, return it.
5467
5468         * mini.c: Call the lazy fetch trampoline to get entries out of the
5469         runtime generic context.
5470
5471         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
5472         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
5473         tramp-sparc.c: Stubs for the lazy fetch trampoline.
5474
5475 2008-02-21  Mark Probst  <mark.probst@gmail.com>
5476
5477         * mini.c: Fetch data out of the extensible part of the runtime
5478         generic context instead of calling a helper function.
5479
5480         * generic-sharing.c: Some functions moved into
5481         metadata/generic-sharing.c.  Helper function for fetching other
5482         types now checks and asserts against extensible rgctx (just for
5483         debugging purposes - the helper function isn't called anymore
5484         unless for debugging).
5485
5486 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5487
5488         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
5489         for tail calls up to the point that the tests in iltests.exe run. Also add a
5490         dummy CKFINITE implementation.
5491         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
5492         needed for trampoline LMF frames.
5493
5494         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
5495         trampoline LMF frames.
5496
5497 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
5498
5499         * mini.c (inline_method): clean any pending loader error when inlining fail.
5500         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
5501
5502 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5503
5504         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
5505
5506         * aot-runtime.c (decode_patch_info): Ditto.
5507
5508         * mini.c (mono_resolve_patch_target): Ditto.
5509         
5510         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
5511         icall wrappers.
5512
5513         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
5514         
5515         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
5516         if it references an icall address.
5517
5518 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
5519
5520         * cpu-s390x.md: Remove some more unused opcodes.
5521         
5522         * cpu-s390x.md: Remove some unused opcodes.
5523
5524         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
5525         mono_op_imm_to_op ().
5526
5527         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
5528         instead of a switch statement.
5529         
5530         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
5531         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
5532
5533         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
5534         
5535         * mini-codegen.c: Remove unused mono_regstate2_... functions.
5536
5537         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
5538         -1.
5539
5540 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
5541
5542         * driver.c (mono_main): Improve error reporting when an assembly cannot be
5543         opened. Fixes #362607.
5544
5545         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
5546
5547         * iltests.il.in: Add a test for static methods in interfaces.
5548
5549 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
5550
5551         * genmdesc.c (build_table): Fix a crash on older glib versions.
5552
5553         * cpu-sparc.md: Remove some unused opcodes.
5554         
5555         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
5556         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
5557
5558         * cpu-amd64.md: Remove some unused opcodes.
5559
5560         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
5561         like the other opcodes.
5562
5563 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
5564
5565         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
5566
5567         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
5568
5569         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
5570         variables 'cfg' instead of 'm' for consistency.
5571
5572         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
5573
5574         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
5575         argument holding the vtype return address, to avoid the ambigious use of
5576         cfg->ret for this purpose.
5577
5578         * mini.c (NEW_RETLOADA): Use vret_addr if set.
5579
5580         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
5581         
5582         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
5583         new mono_print_ins () function which only takes one argument.
5584
5585 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
5586
5587         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
5588         macro arguments.
5589
5590 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
5591
5592         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
5593
5594         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
5595
5596         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
5597         opcodes and other small changes.
5598
5599         * mini-ops.h: Add some new opcodes from the linear IR branch.
5600
5601         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
5602
5603         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
5604         opcodes, use the REG_MEMBASE opcodes instead.
5605         
5606         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
5607         opcodes, use the REG_MEMBASE opcodes instead.
5608         
5609         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
5610         linear IR branch.
5611
5612         * mini.c (mono_op_imm_to_op): New helper function.
5613
5614         * mini-ops.h: Add some opcodes from linear IR branch.
5615
5616 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
5617
5618         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
5619         <tsv@solvo.ru>.
5620
5621 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
5622
5623         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
5624         OP_ICONV_TO_R4/R8.
5625
5626         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
5627
5628 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
5629
5630         * aot-compiler.c (emit_method_code): Add an assert.
5631
5632         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
5633         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
5634         methods.
5635
5636 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
5637
5638         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
5639         some load/store opcodes so they are consistent. 
5640         (mono_arch_emit_prolog): Simplify some code.
5641
5642         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
5643
5644         * objects.cs: Add tests for large argument offsets on ARM.
5645
5646         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
5647         stack offsets. Fixes #359651.
5648
5649         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
5650
5651         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
5652
5653         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
5654
5655         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
5656
5657         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
5658
5659         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
5660         rid of CEE_CONV_R_UN.
5661
5662         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
5663
5664 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
5665
5666         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
5667
5668         * mini.c (mono_normalize_opcodes): Add some more opcodes.
5669
5670         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
5671
5672         * cpu-amd64.md: Remove some unused opcodes.
5673
5674         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
5675
5676         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
5677
5678         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
5679         arch specific functions for its parts. Call the peephole pass after local
5680         regalloc so the prolog can compute a more accurate max_offset.
5681         
5682         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
5683         the corresponding OP_I/OP_L opcodes.
5684
5685         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
5686
5687         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
5688
5689 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5690
5691         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
5692         as they are handled in mini.c.
5693
5694         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
5695         
5696         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
5697         case since it is handled in mini.c.
5698
5699         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
5700
5701         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
5702
5703         * *.c: Use the new opcodes in the IR and back end code.
5704
5705         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
5706
5707         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
5708
5709 2008-02-06  Mark Probst  <mark.probst@gmail.com>
5710
5711         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
5712         an assert because it has a race condition.
5713
5714 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5715
5716         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
5717
5718         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
5719
5720         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
5721
5722         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
5723         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
5724
5725 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
5726
5727         * cpu-amd64.md (move): Correct the maximum size of move.
5728
5729 2008-02-05  Mark Probst  <mark.probst@gmail.com>
5730
5731         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
5732         the generic class init trampoline to return quickly if the class
5733         is already inited.
5734
5735 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
5736
5737         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
5738         issues where an 32 bit callsite cannot be patched by a 64 bit address.
5739
5740 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
5741
5742         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
5743         branch.
5744
5745 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * objects.cs: Add some soft-float tests.
5748
5749         * mini.c: Fix a couple more soft-float issues.
5750
5751         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
5752
5753         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
5754         avoid a REX prefix.
5755
5756 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
5757
5758         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
5759         exception happens while compiling a virtual method.
5760
5761 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
5762
5763         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
5764         
5765         * mini-sparc.c: Fix build.
5766
5767         * mini-sparc.c (get_call_info): Add support for generic sharing.
5768
5769         * mini-exceptions.c: Add a FIXME.
5770
5771 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
5772
5773         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
5774         altstack handling code.
5775
5776         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
5777         
5778         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
5779
5780         * mini-s390.c: Add support for generic sharing.
5781
5782         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5783         Fix CAS on s390.
5784         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5785
5786         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
5787
5788         * mini-s390x.c: Add support for generic sharing.
5789         
5790         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5791         Fix CAS on ia64.
5792         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5793
5794         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
5795         can be used since it takes a 16 bit signed immediate.
5796
5797         * inssel-s390x.brg: Fix OP_SETRET.
5798
5799         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
5800
5801         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
5802
5803         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
5804
5805         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
5806
5807         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
5808         in one place.
5809
5810         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
5811         stuff.
5812
5813         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
5814         of the unused mono_arch_patch_delegate_trampoline stuff.
5815
5816 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
5817
5818         * basic-long.cs: Move the fp related tests to basic-float.cs.
5819
5820         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
5821
5822         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
5823
5824         * basic-calls.cs: Add a test for proper float argument passing.
5825
5826         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
5827         if the context corresponds to an exception received through a signal.
5828
5829         * exceptions.cs: Add a test for nullref handling at the start of a try
5830         clause.
5831
5832         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
5833
5834         * jit-icalls.c (mono_break): New JIT icall.
5835
5836         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
5837
5838         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
5839
5840 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
5841
5842         * cpu-*.md: Get rid of unused opcodes.
5843
5844         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
5845
5846         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
5847         by all platforms.
5848
5849         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
5850         define.
5851
5852         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
5853         the arch independent trampoline code in mini-trampolines.c.
5854
5855         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
5856
5857         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
5858
5859         * mini-s390.h: Remove an unused define.
5860         
5861         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
5862         the arch independent trampoline code in mini-trampolines.c.
5863
5864         * mini-arm.c (mono_arch_emit_prolog): Fix build.
5865
5866 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
5867
5868         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
5869
5870         * mini-s390.c (mono_arch_emit_prolog): Fix build.
5871
5872         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
5873
5874         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
5875
5876         * cpu-amd64.md: Use smaller sizes for int opcodes.
5877
5878         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
5879
5880         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
5881         objects.cs.
5882
5883         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
5884         debugging.
5885
5886         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
5887         instead of though a pointer to save an indirection when accessing elements of
5888         the array.
5889
5890         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
5891         some typos.
5892         (NOT_IMPLEMENTED): New helper macro.
5893         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
5894         of a bb.
5895
5896         * *.c: Use the new helper macro.
5897
5898 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
5899
5900         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
5901
5902 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
5903
5904         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
5905         stack slots.
5906
5907 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
5908
5909         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
5910         profiling is enabled.
5911         
5912         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
5913         the end.
5914         (mono_arch_emit_prolog): Add more first bblock optimizations.
5915
5916         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
5917         in order if possible.
5918         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
5919         bblock, since the arguments are still in their original registers.
5920
5921         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
5922
5923 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
5924
5925         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
5926         as well.
5927
5928         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
5929         offset 0.
5930
5931         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
5932
5933         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
5934         process async exceptions received while in unmanaged code.
5935
5936         * mini.c (mini_init): Install a callback with the runtime which will be called
5937         when a thread receives an async exception while in unmanaged code.
5938
5939         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
5940
5941         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
5942
5943 2008-01-16  Wade Berrier  <wberrier@novell.com>
5944
5945         * cpu-g4.md:
5946         * cpu-arm.md:
5947         * cpu-s390x.md:
5948         fix build
5949
5950 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
5951
5952         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
5953         compilation with sun cc.
5954
5955         * cpu-*.md: Fix the build.
5956
5957         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
5958
5959         * mini-amd64.h: Add some comments to the MonoLMF structure.
5960
5961         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
5962         
5963         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
5964         in the LMF structure if possible. This saves two instructions in the
5965         managed->native wrappers.
5966
5967         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
5968
5969 2008-01-16  Mark Probst  <mark.probst@gmail.com>
5970
5971         * generic-sharing.c: New type argument lookup code which uses the
5972         runtime generic context template.
5973
5974 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
5975
5976         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
5977
5978         * mini-arm.c (add_general): Fix arm eabi parameter passing.
5979         (mono_arch_output_basic_block): Fix localloc implementation.
5980
5981         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
5982
5983         * mini-ia64.c (peephole_pass): Fix ia64 build.
5984
5985         * mini-amd64.c (peephole_pass): Fix a warning.
5986         
5987         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
5988         at a constant offset from sp/fp.
5989
5990         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
5991         instead of obtaining it from *lmf in the managed method case.
5992
5993 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
5994
5995         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
5996
5997 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
5998
5999         * mini.h (MonoInstList): New type.
6000         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
6001         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
6002         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
6003         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
6004         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
6005         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
6006         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
6007         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
6008         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
6009         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
6010         MONO_INST_LIST_FOR_EACH_ENTRY,
6011         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
6012         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
6013         mono_inst_list_first, mono_inst_list_last,
6014         mono_inst_list_next, mono_inst_list_prev): New instruction
6015         list handling interfaces.
6016         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
6017         list head 'ins_list'.
6018         (MonoInst): Replace next pointer with list head 'node'.
6019         (MonoCallInst): Make 'out_args' a MonoInstList.
6020         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
6021         (MonoCompile): Delete reverse_inst_list and
6022         reverse_inst_list_len.
6023         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
6024         mono_arch_lowering_pass, mono_arch_local_regalloc,
6025         mono_arch_output_basic_block, mono_arch_emit_prolog):
6026         Convert to new instruction lists.
6027         (insert_after_ins): Delete.
6028         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
6029         instruction lists.
6030         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
6031         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
6032         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
6033         mono_emulate_opcode, mono_emit_load_got_addr,
6034         inline_method, mono_method_to_ir, mono_print_bb_code,
6035         print_dfn, decompose_pass, nullify_basic_block,
6036         replace_out_block_in_code, remove_block_if_useless,
6037         merge_basic_blocks, move_basic_block_to_end,
6038         try_unsigned_compare, optimize_branches, mono_print_code,
6039         mini_select_instructions, remove_critical_edges): Likewise.
6040         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
6041         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
6042         mono_arch_output_basic_block, mono_arch_emit_prolog):
6043         Likewise.
6044         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
6045         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6046         mono_arch_output_basic_block): Likewise.
6047         (inst_list_prepend, insert_after_ins): Delete.
6048         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
6049         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
6050         instruction lists.
6051         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
6052         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
6053         mono_arch_emit_prolog): Likewise.
6054         * cfold.c (mono_constant_fold): Likewise.
6055         * liveness.c (visit_bb, mono_analyze_liveness,
6056         optimize_initlocals): Likewise.
6057         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
6058         * graph.c (mono_draw_code_cfg): Likewise.
6059         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
6060         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
6061         mono_ssa_cprop): Likewise.
6062         * abcremoval (get_relations_from_previous_bb, process_block):
6063         Likewise.
6064         * local-propagation (mono_cprop_invalidate_values,
6065         mono_local_cprop_bb): Likewise.
6066         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
6067         peephole_pass, mono_arch_output_basic_block,
6068         mono_arch_emit_prolog): Likewise.
6069         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
6070         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6071         mono_arch_emit_prolog): Likewise.
6072         (insert_after_ins): Delete.
6073         * aliasing.c (print_code_with_aliasing_information,
6074         mono_build_aliasing_information, mono_aliasing_deadce):
6075         Convert to new instruction lists.
6076         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
6077         peephole_pass, NEW_INS, mono_arch_lowering_pass,
6078         mono_arch_local_regalloc, mono_arch_output_basic_block):
6079         Likewise.
6080         (insert_after_ins): Delete.
6081         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
6082         peephole_pass, mono_arch_output_basic_block): Convert to
6083         new instruction lists.
6084         * mini-codegen (InstList, inst_list_prepend,
6085         insert_after_ins): Delete.
6086         (insert_before_ins, get_register_force_spilling,
6087         get_register_spilling, free_up_ireg, free_up_reg,
6088         create_copy_ins, create_spilled_store, alloc_int_reg,
6089         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
6090         to new instruction lists.
6091         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
6092         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6093         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
6094         (insert_after_ins): Delete.
6095         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
6096         mono_arch_local_regalloc, mono_arch_output_basic_block,
6097         mono_arch_call_opcode): Convert to new instruction lists.
6098         (insert_after_ins): Delete.
6099         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
6100         peephole_pass, mono_arch_output_basic_block,
6101         mono_arch_emit_prolog): Convert to new instruction lists.
6102
6103 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
6104
6105         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
6106
6107         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
6108         Fixes #353182.
6109
6110         * Makefile.am (version.h): Make this work with non-bash shells.
6111
6112 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
6113
6114         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
6115
6116 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
6117
6118         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
6119         the InitializeArray optimization.
6120
6121 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
6122
6123         * mini.c driver.c: Don't include os/gc_wrapper.h.
6124
6125 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
6126
6127         * mini.c (print_jit_stats): Print GC statistics if available.
6128
6129 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
6130
6131         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
6132
6133 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
6134
6135         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
6136
6137 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
6138
6139         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
6140         
6141         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
6142
6143         * driver.c (mono_main): Ditto.
6144
6145 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
6146
6147         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
6148
6149         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
6150         in the vtable can't be encoded.
6151         (compile_method): Ditto.
6152
6153 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
6154
6155         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
6156         defined.
6157
6158         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
6159         lmf->rbp.
6160
6161         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
6162         the top LMF entry belongs to the current method.
6163
6164         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
6165
6166 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
6167
6168         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
6169         
6170         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
6171
6172         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
6173
6174         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
6175
6176         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
6177
6178         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
6179         implementation.
6180
6181         * basic-float.cs: Add an ulong->double cast test.
6182
6183 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
6184
6185         * mini.c (mono_method_to_ir): Fix a warning.
6186
6187 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
6188
6189         * mini-ops.h: Add OP_SWITCH.
6190
6191         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
6192         CEE_SWITCH in back-end code, use OP_SWITCH instead.
6193
6194 2007-12-11  Geoff Norton  <gnorton@novell.com>
6195
6196         * mini-s390x.c: Minor change to the MAX() define to allow
6197         it to compile with other gcc versions.
6198
6199 2007-12-11  Geoff Norton  <gnorton@novell.com>
6200
6201         * cpu-s390x.md:
6202         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
6203
6204 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6205
6206         exceptions-arm.c (mono_arch_get_restore_context): Restore
6207         the frame pointer.
6208
6209         exceptions-arm.c (throw_exception): Save the frame pointer.
6210         This is a partial fix for #323747. Only the client side is
6211         fixed.
6212
6213 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6214
6215         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
6216         was using an unrelated variable to log the class which
6217         needed the cctor to be called. This was crashing on arm.
6218
6219 2007-12-09  Robert Jordan  <robertj@gmx.net>
6220
6221         * mini-x86.c (mono_arch_emit_epilog):
6222         Consider all kinds of 64-bit types. Fixes #323114.
6223
6224 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
6225
6226         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
6227
6228 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6229
6230         * mini-amd64.c (peephole_pass): Add a missing instruction check.
6231
6232 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6233
6234         * mini.c: run type ctor before allocating an object, not only
6235         when running it's constructor method (fixes at least part of bug #342507).
6236
6237 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6238         
6239         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
6240         
6241         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
6242         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
6243         function.
6244
6245         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
6246         mono_generic_class_init_trampoline () the same as it is done with the other
6247         trampolines.
6248
6249         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
6250         aot-runtime.c aot-compiler.c: Implement AOT support.    
6251
6252 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6253
6254         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
6255         build for archs which don't have the vtable trampoline defined
6256         yet.
6257
6258 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6259
6260         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
6261
6262         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
6263
6264         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
6265
6266         * tramp-<ARCH>.c: Use the new helper function.
6267
6268 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6269
6270         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
6271         trampoline call, which takes a vtable argument.
6272
6273         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
6274         OP_TRAMPCALL_VTABLEs like other calls.
6275
6276         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
6277         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
6278         call.  Implemented a support function which fetches the vtable
6279         from a register set.
6280
6281         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
6282         Implemented a generic class init trampoline, using the
6283         OP_TRAMPCALL_VTABLE opcode.
6284
6285         * mini.c: Implemented static field access when sharing generic
6286         code.  This implies initing the class using the new
6287         OP_TRAMPCALL_VTABLE call.
6288
6289 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6290
6291         * mini.c: Don't compile methods with sharing enabled if their
6292         classes are disabled for sharing.
6293
6294 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6295
6296         * inssel.brg: Add a missing sign extension to the GETCHR and array access
6297         opcodes. Fixes #346563.
6298
6299         * objects.cs: Add a new test.
6300
6301         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
6302
6303         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
6304         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
6305
6306 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6307
6308         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
6309
6310 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
6311
6312         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
6313         code stream.
6314
6315 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
6316
6317         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
6318
6319         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
6320         optimization in the AOT case.
6321         
6322 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
6323
6324         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
6325         
6326         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
6327
6328         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
6329
6330         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
6331
6332         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
6333         is created by the inlined delegate ctor.
6334
6335         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
6336
6337         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
6338
6339 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
6340
6341         * cpu-x86.md: Fix the length of ckfinite.
6342
6343 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
6344
6345         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
6346         
6347         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
6348         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
6349
6350         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
6351
6352         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
6353         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
6354
6355 2007-11-28  Martin Baulig  <martin@ximian.com>
6356
6357         * mini-x86.c
6358         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
6359         after creating the trampoline.
6360
6361 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
6362
6363         * aot-runtime.c (load_aot_module): Check runtime version if needed.
6364
6365         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
6366         the same version.
6367
6368         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
6369         instead of the calling method to help AOT.
6370
6371         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
6372
6373 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
6374
6375         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
6376         is defined.
6377
6378 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
6379
6380         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
6381         
6382         * aot-compiler.c (compile_method): Correct check for generic method definitions.
6383         (encode_method_ref): No need to handle generic method definitions specially.
6384
6385         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6386
6387         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
6388         decode_klass_info.
6389
6390         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
6391         encode_klass_info.
6392         (compile_method): Enable generic sharing.
6393
6394 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
6395
6396         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
6397         (mini_method_compile): Add preliminary support for AOTing shared generic code.
6398
6399         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
6400         generic code.
6401
6402         * mini-trampolines.c: Fix a warning.
6403
6404         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
6405         NEW_PCONST.
6406         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
6407         (generic_class_is_reference_type): Remove unused function.
6408
6409         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
6410         in the generic vtable trampoline case.
6411
6412         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
6413         
6414         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
6415         return an AOT method based on a vtable slot.
6416
6417         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
6418
6419         * mini.c (mini_get_vtable_trampoline): Export this.
6420
6421 2007-11-22  Martin Baulig  <martin@ximian.com>
6422
6423         * debug-debugger.h
6424         (MonoDebuggerInfo): Move `debugger_version' up.
6425
6426 2007-11-22  Martin Baulig  <martin@ximian.com>
6427
6428         * mini-amd64.c
6429         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
6430
6431         * mini-trampolines.c
6432         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
6433         after compiling the method.
6434
6435 2007-11-20  Martin Baulig  <martin@ximian.com>
6436
6437         * debug-mini.c
6438         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
6439         (mono_debugger_remove_breakpoint): Likewise.
6440         (mono_debugger_check_breakpoints): Likewise.
6441
6442         * debug-debugger.c: Implement the new breakpoint interface here.
6443
6444 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
6445
6446         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
6447         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
6448
6449         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
6450
6451 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
6452
6453         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
6454
6455         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
6456         mini.c.
6457
6458         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
6459         mini.c.
6460
6461         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
6462         returning a vtype in a register.
6463
6464         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
6465         here from the arch specific code.
6466
6467         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
6468         mini.c.
6469
6470         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
6471         (mono_arch_emit_prolog): Increment maximum prolog size.
6472
6473         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
6474         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
6475
6476         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
6477         MonoGenericSharingContext.
6478
6479         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
6480         MonoGenericSharingContext. Allocate memory from the cfg mempool.
6481
6482 2007-11-15  Mark Probst  <mark.probst@gmail.com>
6483
6484         * mini.c, mini.h, generic-sharing.c: Functions for producing code
6485         which extract fields out of the runtime generic context.  Full
6486         sharing of the NEWARR opcode.
6487
6488 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6489
6490         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
6491         --enable-minimal=ssa.
6492
6493 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
6494
6495         * mini-trampolines.c (mono_delegate_trampoline): Update after 
6496         mono_marshal_get_delegate_invoke () signature change.
6497
6498 2007-11-13  Mark Probst  <mark.probst@gmail.com>
6499
6500         * mini.c: Removed the shared context in favor of the generic
6501         sharing context.  Allocate the MonoJitInfo structure with room for
6502         the generic sharing context if it's needed.
6503
6504         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
6505         domain-internals.h now.
6506
6507         * mini-x86.c: Pass the generic sharing context to get_call_info ().
6508
6509         * generic-sharing.c: Several changes for working without a shared
6510         context and instead operating on open types instead.
6511
6512 2007-11-12  David S. Miller  <davem@davemloft.net>
6513
6514        * inssel-sparc.brg: Fix double instruction emit.
6515
6516 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
6517
6518         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
6519         Get/Set/Address methods.
6520         
6521         * mini.c debug-debugger.c mini-trampolines.c: Update after 
6522         mono_marshal_get_delegate_invoke signature change.
6523
6524 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6525
6526         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
6527         This can happens with dynamic methods. Fixes the other bug in #322722.
6528
6529 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6530
6531         * tramp-arm.c (mono_arch_patch_callsite): Support patching
6532         BX call sequence.
6533
6534         * mini-arm.c (arm_patch): Implement patching of BX call
6535         sequence. Fixes one of the bugs in #322722.
6536
6537 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
6538
6539        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
6540        under Linux.  We only need to flush every 32-byte cache line.    
6541
6542 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
6543
6544         * mini.c:
6545         move_basic_block_to_end: Add branches when needed, eventually creating
6546         a new BB.
6547         optimize_branches: added a parameter that tells if it's ok to create
6548         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
6549         and avoid calling move_basic_block_to_end when it's not ok.
6550         Fixes bug 318677.
6551
6552 2007-11-07  Mark Probst  <mark.probst@gmail.com>
6553
6554         * mini.c: Abort inlining call to InitializeArray if something
6555         looks wrong.  Let the icall handle it, which now has proper safety
6556         checks.
6557
6558 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6559
6560         * mini.c (mono_spill_call): add support for soft-float.
6561
6562         * mini.c (mono_method_to_ir): add support for soft-float
6563         to inlined functions that return float.
6564
6565         * mini.c (mono_method_to_ir): add support for soft-float
6566         to cee_stsfld opcode on float fields.
6567
6568 2007-11-05  Geoff Norton  <gnorton@novell.com>
6569
6570         * mini-x86.h: Fix the structure access for X86 Leopard.
6571
6572
6573 2007-11-05  Martin Baulig  <martin@ximian.com>
6574
6575         * mini-trampolines.c
6576         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
6577         after compiling the method to notify the debugger.
6578
6579 2007-11-05  Martin Baulig  <martin@ximian.com>
6580
6581         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
6582
6583 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
6584
6585         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
6586         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
6587
6588 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
6589
6590         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
6591         native-to-managed wrappers.
6592         
6593 2007-11-01  Geoff Norton  <gnorton@novell.com>
6594
6595         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
6596         members.
6597
6598 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
6599
6600         * mini.c, mini-x86.c: when getting back from unmanaged code
6601         to managed via a marshaled delegate we also need to set the
6602         right domain.
6603
6604 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
6605
6606         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
6607         for amd64.
6608
6609 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6610
6611         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
6612         let the debugger or other external agents to tell the JIT when
6613         a sw breakpoint has been inserted in the code that the JIT needs
6614         to be able to inspect.
6615
6616 2007-10-31  Martin Baulig  <martin@ximian.com>
6617
6618         * debug-debugger.h
6619         (MonoDebuggerInfo): Remove `runtime_class_init'.
6620
6621 2007-10-30  Martin Baulig  <martin@ximian.com>
6622
6623         * debug-mini.h
6624         (mono_debugger_thread_created): Added `MonoThread *' argument.
6625         (mono_debugger_extended_notification): New public method.
6626         (mono_debugger_trampoline_compiled): New public method.
6627
6628         * debug-mini.c
6629         (MonoDebuggerThreadInfo): Added `thread' and
6630         `extended_notifications' fields.
6631
6632         * debug-debugger.c
6633         (debugger_executable_code_buffer): New static variable.
6634
6635         * debug-debugger.h
6636         (MonoDebuggerInfo): Added `executable_code_buffer',
6637         `executable_code_buffer_size', `breakpoint_info_area',
6638         `breakpoint_table' and `breakpoint_table_size'.
6639
6640 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
6641
6642         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
6643         that IP  either is an unused value or the vtable pointer. IMT 
6644         calls use vtable + offset now. Reduced by almost half the size
6645         of IMT entries.
6646
6647 2007-10-26  Jonathan Chambers <joncham@gmail.com>
6648
6649         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
6650         defines to access param registers. Replace long usage with
6651         gsize as sizeof(long) != sizeof(void*) on Win64.
6652
6653         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
6654         on Win64. Fix intrinsic, use _AddressOfReturnAddress
6655         instead of non-existant _GetAddressOfReturnAddress.
6656
6657         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
6658         param registers. Save/restore %rdi and %rsi in MonoLMF.
6659
6660         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
6661         param registers. Modify (throw_exception) signature to take 
6662         %rdi and %rsi on Win64. 
6663
6664         Code is contributed under MIT/X11 license.
6665
6666 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6667
6668         * helpers.c: unlink debugging output files.
6669
6670 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
6671
6672         * mini.c: Move mono_create_ftnptr () to object.c.
6673
6674 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6675
6676         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
6677         optional. This function can now be used to disassemble code generated
6678         outside the JIT such as trampolines and IMT thunks.
6679
6680         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
6681
6682         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
6683         vtable pointer from a ldr instruction.
6684
6685         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
6686         new IMT call sequence.
6687
6688         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
6689         call sequence for interface invocations.
6690
6691         * mini-arm.c (mono_arch_emit_imt_argument): added, required
6692         for imt support. This function is empty since IMT on ARM requires no
6693         special handling on the IR side.
6694
6695         * mini-arm.c (mono_arch_find_imt_method): added, required for
6696         imt support.
6697
6698         * mini-arm.c (mono_arch_find_this_argument): added, required
6699         for imt support.
6700
6701         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
6702         a ldr instruction to load a value stored in the code stream.
6703
6704         * mini-arm.c (mono_arch_build_imt_thunk):added, required
6705         for imt support.
6706
6707
6708 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
6709
6710         * mini.c (mini_init): Install the jump trampoline callback.
6711
6712 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6713
6714         * mini-trampolines.c: handle synchronized methods with the common
6715         vtable trampoline (bug #335601).
6716
6717 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
6718
6719         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
6720
6721         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
6722         64 bit platforms.
6723
6724         * mini-ia64.h mini-ia64.c: Add support for IMT.
6725
6726         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
6727         prolog. Fixes #331958.
6728
6729 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
6730
6731         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
6732
6733 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6734
6735         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
6736         trampoline.
6737
6738 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6739
6740         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
6741         trampoline.
6742
6743 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
6744
6745         * mini-x86.c, mini-x86.h: x86 support for the common vtable
6746         trampoline.
6747
6748 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
6749
6750         * mini-trampolines.c: changed the magic rampoline to understand
6751         the common vtable trampoline method: the method to invoke is
6752         determined by the vtable displacement of the call.
6753
6754 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6755
6756         * mini.c, mini.h: register the common vtable trampoline if the
6757         architecture supports it.
6758
6759 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6760
6761         * cpu-amd64.md: use the correct max length for tls_get.
6762
6763 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
6764
6765         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
6766         CEE_STELEM_ANY. Fixes #333696.
6767
6768 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
6769
6770         * exceptions-x86.c: provide more graceful handling of the case where
6771         we followed a bogus function pointer from managed code (bug #332866).
6772
6773 2007-10-11  Mark Probst  <mark.probst@gmail.com>
6774
6775         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
6776         replaces the generic_shared flag and will carry more information
6777         in the future.
6778
6779         * generic-sharing.c: Added mini_type_stack_size() which allows
6780         allows open types if given a generic sharing context.
6781         mini_get_basic_type_from_generic() takes a
6782         MonoGenericSharingContext* instead of a MonoCompile* now.
6783
6784         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
6785         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
6786         mini-sparc.c, mini-x86.c: Trivial changes required by the two
6787         changes above.  Just passing arguments through to the right
6788         places.
6789
6790 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
6791
6792         * mini-arm.c: unify the call emission to emit_code_seq().
6793
6794 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
6795
6796         * tramp-arm.c: reduced the trampoline size.
6797
6798 2007-10-10  Mark Probst  <mark.probst@gmail.com>
6799
6800         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
6801         variable handling out of arch-specific code.
6802
6803 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
6804
6805         * mini-arm.c: implemented fast delegate dispatch.
6806
6807 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6808
6809         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
6810         that fp elimination is turned off if the space required by locals is too
6811         big. Fixes #331958.
6812
6813 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
6814
6815         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
6816         ARM to the new style trampoline.
6817
6818 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6819
6820         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
6821
6822         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
6823
6824 2007-10-09  Martin Baulig  <martin@ximian.com>
6825
6826         * debug-debugger.h
6827         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
6828         `field_info_offset_offset'.     
6829
6830 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
6831
6832         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
6833         removed more internal usage of the r11 register and made it available
6834         to the register allocator.
6835
6836 2007-10-08  Mark Probst  <mark.probst@gmail.com>
6837
6838         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
6839         when sharing generics and treat type variables as references.
6840
6841 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6842
6843         * mini-ppc.c: started removing the internal uses of register r11
6844         to eventually allow the register allocator to manage it as an
6845         additional available register.
6846
6847 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
6848
6849         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
6850
6851 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
6852
6853         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
6854         specific trampolines as they are not performance critical as a jump
6855         target (maybe align as before only for AOT code?). This saves about
6856         200 KB of native code on x86 for monodevelop startup.
6857
6858 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
6859
6860         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
6861         monodevelop startup.
6862
6863 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
6864
6865         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
6866
6867         * mini-sparc.h mini-sparc.c: Implement IMT support.
6868
6869         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
6870         its smaller and doesn't clobber sparc_g1.
6871
6872         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
6873
6874 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6875
6876         * mini-ppc.c: optimized the size of the IMT thunks a bit.
6877
6878 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
6879
6880         * mini-ppc.c: implemented fast delegate invocation.
6881
6882 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
6883
6884         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
6885
6886 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6887
6888         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
6889         code to the new style trampoline in preparation for IMT support.
6890
6891 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
6892
6893         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
6894         systems already. This also reduces the specific trampiline sizes and
6895         prepares for the use of r12 as the IMT identifier register.
6896
6897 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6898
6899         * mini-mips.h: endianess fix (simplified from a patch by
6900         Thomas Kunze <thommy@tabao.de>, bug #323737).
6901
6902 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6903
6904         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
6905         to access ucontext fields and enable netbsd support
6906         (partially from Magnus Henoch <mange@freemail.hu>).
6907
6908 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6909
6910         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
6911         use the preprocessor from the CPP env var if it is set.
6912
6913 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6914
6915         * mini-trampolines.c: fixed an assertion and moved it earlier in the
6916         code, before interface_offset gets used.
6917
6918 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
6919
6920         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
6921         mono_class_setup_vtable () before accessing klass->vtable.
6922
6923 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
6924
6925         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
6926         hackish.
6927
6928 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6929
6930         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
6931         IMT slots (this saves hundreds of KB of memory in programs like
6932         IronPython and Monodevelop).
6933
6934 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
6935
6936         * mini.c: print the delegate counter.
6937
6938 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
6939
6940         * mini-x86.c: make it easier to enable the debugging code for IMT
6941         slots.
6942
6943 2007-09-28  Martin Baulig  <martin@ximian.com>
6944
6945         * debug-debugger.h
6946         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
6947         `mono_method_klass_offset' and `mono_method_token_offset'.
6948
6949 2007-09-20  Mark Probst  <mark.probst@gmail.com>
6950
6951         * mini.c: First generics sharing implementation.  Can only share
6952         in very simple cases.  If sharing doesn't work it falls back to
6953         dedicated compilation.
6954
6955         * mini.h: Flag in MonoCompile to specify whether generic
6956         compilation is shared.  Flags enum for marking which generic inst
6957         of a context is used.  Prototypes for helper functions.
6958
6959         * generic-sharing.c: Helper functions for generic method sharing.
6960
6961         * optflags-def.h: Optimization flag (gshared) for enabling generic
6962         method sharing added.
6963
6964         * Makefile.am: generic-sharing.c added.
6965
6966 2007-09-19 Daniel Nauck <dna@mono-project.de>
6967
6968         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
6969
6970 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
6971         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
6972         fixes bug 325507.
6973
6974 2007-09-19  Martin Baulig  <martin@ximian.com>
6975
6976         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
6977         mono_debug_cleanup() is now part of mono_cleanup().
6978
6979 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * driver.c (mono_main): Fix a warning.
6982
6983 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
6984
6985         * aot-compiler.c: Optimize various parts when processing large assemblies.
6986         Fixes ##325568.
6987
6988         * mini.c (mono_patch_info_hash): Improve hash function.
6989
6990 2007-09-14  Jonathan Chambers <joncham@gmail.com>
6991
6992         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
6993         
6994         Code is contributed under MIT/X11 license.
6995
6996 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6997
6998         * mini.c (mini_init): Fix a leak.
6999
7000         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
7001
7002 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7003
7004         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
7005
7006 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
7007
7008         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
7009
7010 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
7011
7012         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
7013         variance tests.
7014
7015         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
7016
7017         * mini.c (handle_alloc): Enable managed allocators in AOT code.
7018
7019         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
7020
7021         * aot-runtime.c (decode_patch_info): Ditto.
7022
7023 2007-09-12  Jonathan Chambers <joncham@gmail.com>
7024
7025         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
7026         static case. Cache delegates in architecture specific code, 
7027         based on number of parameters.
7028         
7029         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
7030         in architecture specific code, based on number of parameters.
7031         
7032         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
7033         caching happen in architecture specific code now.
7034         
7035         Code is contributed under MIT/X11 license.
7036
7037 2007-09-12  Jonathan Chambers <joncham@gmail.com>
7038
7039         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
7040         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
7041         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
7042
7043         Code is contributed under MIT/X11 license.
7044
7045 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7046         * mini.c: (mono_thread_abort) Fixed bug #82416.
7047
7048 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
7049
7050         * mini.: hook the new managed GC allocation feature into the JIT.
7051
7052 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7053
7054         * mini.c: implementation for the new runtime tls opcode.
7055
7056 2007-09-11  Martin Baulig  <martin@ximian.com>
7057
7058         * debug-debugger.h
7059         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
7060         `mono_method_inflated_offset'.
7061
7062 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
7063
7064         * driver.c mini.h mini.c: Add a new devel command line option for injecting
7065         async exceptions into a method.
7066
7067         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
7068         purpose of testing whenever the unwinder works at every instruction.
7069
7070 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
7071
7072         * mini.c: check accessibility of method used in ldftn (fixes
7073         bug #82635).
7074
7075 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
7076
7077         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
7078
7079         * inssel.brg: Fix a warning.
7080
7081 2007-09-03  Martin Baulig  <martin@ximian.com>
7082
7083         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
7084         now takes the `main_method' as argument.
7085
7086 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
7087
7088         * cpu-sparc.md (endfilter): Add missing src1:i argument.
7089
7090 2007-08-30  Jonathan Chambers <joncham@gmail.com>
7091
7092         * driver.c: include the cil-coff.h header on Windows.
7093         
7094         Code is contributed under MIT/X11 license.
7095
7096 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7097
7098         * mini.c, driver.c: don't include the cil-coff.h header.
7099
7100 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
7101
7102         * mini.c: flag places that needs fixes fo soft-float support.
7103
7104 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
7105
7106         * mini.h, inssel-float.brg: fix soft-float constant loads on big
7107         endian systems (partially from Dean Jenkins, bug #81924).
7108
7109 2007-08-28  Mark Probst  <mark.probst@gmail.com>
7110
7111         * mini.c (check_linkdemand): Remove embedded reference object in
7112         call to LinkDemandSecurityException.
7113         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
7114         with an IntPtr instead of a reference object.
7115
7116 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
7117
7118         * mini.c (handle_initobj): Handle alignment properly.
7119
7120         * inssel.brg (mini_emit_memset): Ditto. 
7121
7122         * inssel.brg (mini_emit_memcpy): Ditto. 
7123
7124         * inssel-sparc.brg: Ditto.              
7125
7126         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
7127
7128 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
7129
7130         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
7131         exceptions raised in unmanaged code. Fixes part of #82594.
7132
7133 2007-08-24  Mark Probst  <mark.probst@gmail.com>
7134
7135         * mini.c (mono_method_to_ir), declsec.c
7136         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
7137
7138 2007-08-22  Martin Baulig  <martin@ximian.com>
7139
7140         * debug-mini.h
7141         (MonoDebuggerThreadInfo): New typedef.
7142         (mono_debugger_thread_table): New global variable.
7143         (mono_debugger_thread_created): New public function.
7144         (mono_debugger_thread_cleanup): New public function.
7145
7146         * debug-debugger.h
7147         (MonoDebuggerInfo):
7148         - removed `get_current_thread' and `lookup_assembly'.
7149         - removed `data_table'.
7150         - added `thread_table'.
7151
7152         * mini.c
7153         (mono_thread_start_cb): Call mono_debugger_thread_created().
7154         (mono_thread_attach_cb): Likewise.
7155         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
7156         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
7157         initial domain.
7158
7159         * driver.c (mono_main): Move mono_debug_init() up, before calling
7160         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
7161
7162 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7163
7164         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
7165         together when passing several arguments of type double (gives a small
7166         speedup and saves a few bytes of generated code).
7167
7168 2007-08-20  Jb Evain  <jbevain@novell.com>
7169
7170         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
7171
7172 2007-08-20  Jb Evain  <jbevain@novell.com>
7173
7174         * mini.c (mono_method_to_ir): throw MethodAccessException
7175         and FieldAccessException instead of InvalidProgramException.
7176
7177 2007-08-20  Mark Probst  <mark.probst@gmail.com>
7178
7179         * mini.c: CoreCLR security checks.
7180
7181         * mini.h: Removed MonoSecurityMode (moved to
7182         metadata/security-manager.h) and mono_security_mode global var
7183         (replaced by set/get functions in security-manager.h).
7184
7185         * driver.c: Added "core-clr-test" security mode for testing.  Used
7186         set-function for setting security mode.
7187
7188 2007-08-17  Mark Probst  <mark.probst@gmail.com>
7189
7190         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
7191         the new jit_info_table.
7192
7193         * driver.c: Test code for the new jit_info_table (enabled by the
7194         define MONO_JIT_INFO_TABLE_TEST).
7195
7196 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
7197
7198         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
7199         detection of call <REG> instruction sequence. Fixes build on freebsd.
7200
7201 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
7202
7203         * mini-exceptions.c: Fix a warning.
7204
7205 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
7206
7207         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
7208         stack overflow handling code on amd64 too.
7209
7210         * mini-exceptions.c (mono_setup_altstack): Make this use 
7211         mono_thread_get_stack_bounds ().
7212
7213         * mini-x86.h: Disable sigaltstack on solaris x86.
7214
7215 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
7216
7217         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
7218
7219 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
7220
7221         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
7222
7223 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
7224
7225         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
7226
7227         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
7228
7229 2007-08-03  Neale Ferguson <neale@sinenomine.net>
7230
7231         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
7232         due to alignment.
7233
7234 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7235
7236         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
7237         to be emitted (bug #82281).
7238
7239 2007-08-01  Martin Baulig  <martin@ximian.com>
7240
7241         Merged the `debugger-dublin' branch.
7242
7243         * debug-debugger.h (MonoDebuggerInfo):
7244         Removed the `old_*' compatibility entries.
7245         Added `debugger_version' and `data_table'.
7246         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
7247         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
7248
7249         * debug-mini.c
7250         (MiniDebugMethodBreakpointInfo): Add `address_list'.
7251         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
7252         instead of a `gconstpointer'.
7253         (mono_debugger_insert_method_breakpoint): Return a
7254         `MonoDebugMethodAddressList *'.
7255
7256 2007-06-28  Martin Baulig  <martin@ximian.com>
7257
7258         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7259
7260 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
7261
7262         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
7263         __builtin_frame_address () since it is broken on older gcc versions.
7264
7265 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
7266
7267         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
7268         on the stack overflow handling and made the managed stack overflows
7269         catchable in most cases using soft guard pages.
7270         * exceptions-x86.c: added code to restore the protection in the soft
7271         guard pages at the end of exception handling.
7272
7273 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
7274
7275         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
7276
7277 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7278
7279         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
7280         exception handling.
7281
7282 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7283
7284         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
7285         signal handling support until it has been ported to the new mechanism.
7286         * mini.c: fixed stack overflow detection and use the new
7287         architecture code  to handle signals on the altstack.
7288
7289 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
7290
7291         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
7292         stack overflows on the alt stack.
7293
7294 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
7295
7296         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
7297         stack overflows on the alt stack.
7298
7299 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
7300
7301         * exceptions-ppc.c: cleanup preparing for altstack support.
7302
7303 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7304
7305         * exceptions-arm.c: cleanup preparing for altstack support.
7306
7307 2007-07-27  Mark Probst  <mark.probst@gmail.com>
7308
7309         * mini.c (print_jit_stats): Output hazard pointer stats.
7310
7311 2007-07-26  Mark Probst  <mark.probst@gmail.com>
7312
7313         * driver.c, mini.c: Replaced security mode flags with a single
7314         enum variable.
7315
7316 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7317
7318         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
7319
7320 2007-07-25  Mark Probst  <mark.probst@gmail.com>
7321
7322         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
7323         (which doesn't do anything yet) for activating Core CLR
7324         (Silverlight) security.
7325
7326 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
7327
7328         * mini-codegen.c: work around a possible gcc bug on arm.
7329
7330 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
7331
7332         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
7333         message for platforms that don't support AOT compilation.
7334
7335 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
7336
7337         * mini.h, mini.c, driver.c: temporary smcs hack.
7338
7339 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
7340
7341         * mini-arm.h, mini-arm.c: arm EABI fixes.
7342
7343 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
7344
7345         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
7346         case.
7347
7348         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
7349         trampolines taking a method argument.
7350
7351         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
7352
7353         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
7354         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
7355
7356         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
7357         JIT compilation throws an exception. Fixes #82050.
7358
7359 2007-07-19  Mark Probst  <mark.probst@gmail.com>
7360
7361         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
7362         with the MONO_EXCEPTION_ defines.
7363
7364 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
7365
7366         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
7367         #82117.
7368         
7369         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
7370         the cause of an assertion.
7371
7372 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
7373
7374         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
7375         removed.
7376
7377 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
7378
7379         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
7380         assert. Should fix #82103.
7381
7382 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
7383
7384         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
7385         here too. Fixes #82095.
7386
7387         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
7388         addresses.
7389
7390         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
7391
7392         * mini-amd64.h: Enable IMT for amd64.
7393         
7394         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
7395
7396 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
7397
7398         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
7399
7400 2007-07-12  Mark Probst  <mark.probst@gmail.com>
7401
7402         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
7403         as soon as check_linkdemand sets an exception_type.
7404
7405 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7406
7407         * mini-x86.c: fixed offsets for IMT call sequence.
7408         * mini-x86.h: enable IMT again.
7409
7410 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7411
7412         * trace.c (mono_trace_enter_method): Decode MonoType too.
7413
7414         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
7415
7416         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
7417
7418         * mini-amd64.c: Add preliminary IMT implementation.
7419         
7420 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
7421
7422         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
7423         understand the new IMT-base interface invocation (thanks to
7424         Daniel Nauck for the report and the remote debugging session).
7425
7426 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
7427
7428         * mini-x86.c: size and speed optimizations for the IMT bsearch.
7429
7430 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7431
7432         * Makefile.am (aotcheck): Make this actually use the AOTed code.
7433
7434 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
7435
7436         * mini-trampolines.c: implement AOT IMT support.
7437         * mini-x86.h: enable IMT support for wider testing.
7438
7439 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7440
7441         * inssel.brg (emit_imt_argument): Add aot support here.
7442
7443         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
7444
7445 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
7446
7447         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
7448         of the IMT implementation, partially from massi, with my
7449         implementation of the bsearch sequence. Disabled by default until
7450         the AOT code is implemented.
7451
7452 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7453
7454         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
7455
7456         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
7457
7458 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7459
7460         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
7461         arch-independent IMT JIT code from Massimiliano
7462         Mantione (massi@ximian.com) with small cleanups from me.
7463
7464 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7465
7466         * Makefile.am: fix svn invocation to get the svn revision to be
7467         independent of the local language (build fix).
7468
7469 2007-07-09  Mark Probst  <mark.probst@gmail.com>
7470
7471         * mini.c (inline_method): Reset cfg->exception_type if the
7472         inlining is aborted.  Fixes: 82049.
7473
7474 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
7475
7476         * mini.c: remove assert from exception handling code when exception_ptr
7477         is not set.
7478
7479 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7480
7481         * mini.c (mono_codegen): Add an assert.
7482
7483         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
7484         enter and leave code.
7485         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
7486
7487 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7488
7489         * mini-ppc.c: fixed memory corruption for localloc(0)
7490         (bug #81852).
7491
7492 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7493         
7494         * mini.c: Fix warnings.
7495
7496 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
7497
7498         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
7499         to emit better double->int conversions.
7500
7501 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7502
7503         * mini.c: the provided Min/Max optimizations are valid for unisgned
7504         ints.
7505
7506 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
7507
7508         * 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
7509
7510 2007-06-28  Miguel de Icaza  <miguel@novell.com>
7511
7512         * mini.c (mono_running_on_valgrind): Add support for reporting the
7513         method and  its boundaries to valgrind.
7514
7515 2007-06-28  Martin Baulig  <martin@ximian.com>
7516
7517         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7518
7519 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
7520
7521         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
7522
7523         * generic.2.cs: Add new test case.
7524
7525 2007-06-25  Martin Baulig  <martin@ximian.com>
7526
7527         Merged the `debugger-dublin' branch.
7528
7529         * debug-mini.c
7530         (mono_debugger_insert_method_breakpoint): New public method.
7531         (mono_debugger_remove_method_breakpoint): Likewise.
7532         (mono_debugger_check_breakpoints): New static method.
7533         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
7534
7535         * debug-debugger.h (MonoDebuggerInfo):
7536         Renamed (to keep backward compatibility in the vtable):
7537         `insert_breakpoint' -> `old_insert_breakpoint'.
7538         `remove_breakpoint' -> `old_remove_breakpoint'.
7539         `create_string' -> `old_create_string'.
7540         `lookup_class' -> `old_lookup_class'.
7541         `lookup_type' -> removed; changed into a dummy field.
7542         `lookup_assembly' -> `old_lookup_assembly'.
7543         Added (same functionality, but different signature):
7544         `create_string', `lookup_class', `lookup_assembly'
7545         Added new:
7546         `get_method_addr_or_bpt', `remove_method_breakpoint',
7547         `runtime_class_init'.
7548
7549         * debug-debugger.c: Merged the `debugger-dublin' branch.
7550
7551 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
7552
7553         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
7554         well.
7555         (peephole_pass): Likewise.
7556
7557 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
7558
7559         * driver.c: hopefully make setaffinity work also for ancient
7560         versions of linux.
7561
7562 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
7563
7564         * driver.c : win32 build fix.
7565
7566 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
7567
7568         * driver.c: check for the MONO_NO_SMP env var and bind to a single
7569         processor if it is set.
7570
7571 2007-06-21  Martin Baulig  <martin@ximian.com>
7572
7573         * debug-mini.h: New file.
7574
7575         * debug-mini.c
7576         (mono_debugger_insert_breakpoint_full): Moved here from
7577         ../metadata/mono-debug-debugger.c.
7578         (mono_debugger_remove_breakpoint): Likewise.
7579         (mono_debugger_breakpoint_callback): Likewise.
7580
7581 2007-06-15  Raja R Harinath  <rharinath@novell.com>
7582
7583         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7584         changes in MonoGenericClass.
7585
7586 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
7587
7588         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
7589
7590 2007-06-14  Raja R Harinath  <rharinath@novell.com>
7591
7592         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7593         removal of MonoGenericMethod.
7594
7595 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7596
7597         * mini-exceptions.c: hooks for the exception events profiling API.
7598
7599 2007-06-14  Randolph Chung  <tausq@debian.org>
7600
7601         * Makefile.ma: Add hppa target.
7602         * mini-arch.h: Include mini-hppa.h
7603         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
7604         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
7605         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7606
7607 2007-06-14  Randolph Chung  <tausq@debian.org>
7608
7609         * inssel.brg: Add rules for "chained" compare-branch operations so that
7610         a single compare op can affect multiple branches.  Adjust cost for
7611         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
7612         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
7613         cost for some rules so that they can more easily be overridden by
7614         per-arch rules (with fixes from lupus).
7615         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7616
7617 2007-06-13  Randolph Chung  <tausq@debian.org>
7618
7619         * mini-ops.h: Reorder branch ops so that they match the order of the
7620         corresponding CEE_* ops.  The code expects them this way.
7621         Add new ops for HPPA target.
7622         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7623
7624 2007-06-13  Randolph Chung  <tausq@debian.org>
7625
7626         * mini-exceptions.c: Handle cases where the stack grows towards
7627         larger addresses.
7628         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7629
7630 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7631
7632         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
7633         counter.
7634         * driver.c: explain where a non-matching corlib is found.
7635
7636 2007-06-13  Mark Probst  <mark.probst@gmail.com>
7637
7638         * mini.c (print_jit_stats): Output dynamic code allocation stats.
7639
7640 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
7641
7642         * mini-exceptions.c: Generate a method profile leave event during
7643         an exception to ensure that the profiler gets notified.
7644
7645 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
7646
7647         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
7648         branch.
7649
7650         * cpu-amd64.md: Add long_and/or/xor opcodes.
7651
7652 2007-06-06  Wade Berrier  <wberrier@novell.com>
7653
7654         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
7655         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
7656         length of instruction shr_imm (expected 8, got 10)
7657
7658 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
7659
7660         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
7661
7662 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7663
7664         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7665         MonoInternalHashTable again (fixed bug in the internal hash table
7666         code).
7667
7668 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7669
7670         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
7671         Have to figure out what makes it crash the SWF regression.
7672
7673 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
7674
7675         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
7676
7677 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7678
7679         * mini.c: optimize out the type check when storing null in a
7680         reference array.
7681
7682 2007-06-04  Mark Probst  <mark.probst@gmail.com>
7683
7684         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7685         MonoInternalHashTable.
7686
7687 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
7688
7689         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
7690         signed integer methods.
7691
7692 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7693
7694         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
7695         permanently since the current approach doesn't work.
7696
7697 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7698
7699         * inssel.brg (stmt): Only call delegate->invoke_impl if 
7700         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
7701
7702 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7703
7704         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
7705         the sreg2==rdx case.
7706         
7707         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
7708         account if it contains a rex prefix.
7709         (peephole_pass): Handle OP_FMOVE as well.
7710
7711 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7712
7713         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
7714         as it causes regressions.
7715
7716 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
7717
7718         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
7719         static case as well.
7720
7721         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
7722
7723         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7724         (mono_arch_get_this_arg_from_call): Ditto.
7725
7726         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
7727
7728         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
7729         invoke_impl field.
7730
7731         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7732         (mono_arch_get_this_arg_from_call): Ditto.
7733
7734         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
7735         
7736         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
7737         try to create optimized invoke code and use that for further invocations. 
7738         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
7739
7740         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
7741
7742 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
7743
7744         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
7745         sealed classes or methods.
7746         *devirtualization.cs: tests for the new optimization
7747
7748 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
7749
7750         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
7751         by the update_volatile () function.
7752
7753 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
7754
7755         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
7756         require it.
7757
7758         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
7759
7760 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
7761
7762         * mini.c: Add configure checks for header files.
7763         * mini-x86.c: Add configure checks for header files.
7764         * trace.c: Add configure checks for header files.
7765         * aot-runtime.c: Add configure checks for header files.
7766         * aot-compiler.c: Add configure checks for header files.
7767         * driver.c: Add configure checks for header files.
7768         * mini-codegen.c: Add configure checks for header files.
7769         
7770         Code is contributed under MIT/X11 license.
7771
7772 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
7773
7774         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
7775         icompare_imm -128 + op_iclt. Fixes #81703.
7776
7777 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
7778
7779         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
7780
7781 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7782
7783         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
7784         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
7785         so that all isinst checks now use "interface_bitmap".
7786
7787 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
7788
7789         * cpu-amd64.md (jmp): Fix a warning.
7790
7791         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
7792
7793         * basic.cs: Add new regression test.
7794
7795         * basic.cs: Remove test which is now in basic-long.cs.
7796
7797         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
7798
7799         * basic-long.cs: Add new test.
7800         
7801 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
7802
7803         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
7804
7805 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
7806
7807         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
7808
7809         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
7810         places.
7811         
7812         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
7813         throwing code a bit.
7814
7815         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
7816         the exception throwing code a bit.
7817
7818         * mini-x86.c (get_call_info): Allocate result from a mempool.
7819
7820 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
7821
7822         * aot-compiler.c (find_typespec_for_class): Fix the assert.
7823
7824         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
7825
7826         * mini.h (MonoCompile): Add 'token_info_hash' field.
7827
7828         * mini.c: Save token->method associations during compilation so the AOT 
7829         compiler can use it.
7830         
7831         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
7832         which reference generic classes and methods.
7833
7834 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
7835
7836         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
7837
7838         * aot-compiler.c (compile_method): Fix a typo in a comment.
7839
7840         * aot-runtime.c (decode_cached_class_info): Skip generic types.
7841
7842         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
7843         everything generic.
7844
7845         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
7846
7847 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
7848
7849         * mini.h (MonoCompile): Add 'args' field.
7850
7851         * mini.c (mono_compile_create_vars): Store variables representing the arguments
7852         into cfg->args.
7853
7854         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
7855
7856 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
7857
7858         * mini.c (mono_compile_get_interface_var): Remove this unused function.
7859
7860         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
7861
7862         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
7863         opcodes for some opcodes.
7864
7865         * mini.h *.brg *.c: Use the new opcodes.
7866
7867 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
7868
7869         * mini.h: Bumped aot revision.
7870
7871         * inssel.brg: modified code generation of type checks for interfaces
7872         to use the new "MonoClass.interface_bitmap" instead of the old
7873         "MonoClass.interface_offsets".
7874
7875 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
7876
7877         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
7878
7879 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
7880
7881         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
7882         64 bit platforms.
7883
7884 2007-04-27  Neale Ferguson <neale@sinenomine.net>
7885
7886         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
7887
7888 2007-04-27  Wade Berrier  <wberrier@novell.com>
7889
7890         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
7891         mini.h) to fix build.
7892
7893 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
7894
7895         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
7896         
7897         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
7898         causes the corlib unit tests to fail.
7899
7900 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
7901
7902         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
7903
7904         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
7905
7906         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
7907         opcodes to the comparison relations.
7908
7909         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
7910         opcodes to their types.
7911         
7912         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
7913
7914         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
7915         it in cfg->arch.cinfo.
7916
7917         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
7918
7919         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
7920         cfg->cil_offset_to_bb.
7921
7922 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
7923
7924         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
7925         created becase of initlocals.
7926
7927 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
7928
7929         * mini-alpha.c cpu-alpha.md: More alpha port work from 
7930         Sergey Tikhonov <tsv@solvo.ru>.
7931
7932 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
7933
7934         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
7935
7936 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
7937
7938         * cpu-s390.md (break): Correct the length of break instruction.
7939
7940 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7941
7942         * mini.c: fix a couple of soft-float issues and comments.
7943
7944 2007-04-15  Miguel de Icaza  <miguel@novell.com>
7945
7946         * trace.c (is_filenamechar): - is also a filename char.
7947
7948 2007-04-15  Neale Ferguson <neale@sinenomine.net>
7949
7950         * mini-s390.c: Correct checking for enum type in return value processing.
7951
7952 2007-04-14  Raja R Harinath  <rharinath@novell.com>
7953
7954         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
7955         (version.h): Makefile is in the build directory.
7956
7957 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
7958
7959         * mini-amd64.h: fix for assertion failure on Solaris/amd64
7960
7961 2007-04-11  Martin Baulig  <martin@ximian.com>
7962
7963         * mini.c (can_access_member): Fix handling of generic classes;
7964         fixes #81259.
7965
7966 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
7967
7968         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
7969
7970 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
7971
7972         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
7973
7974 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
7975
7976         * mini-codegen.c: make sure the right spill amount is
7977         used for fp or integer registers (fixes the float_sub_spill() on ppc).
7978
7979 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
7980
7981         * mini-ppc.c: fixes for the fp_branch_nan test.
7982
7983 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
7984
7985         * basic.cs: Comment out new test which still fails on ia64.
7986
7987 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7988
7989         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
7990
7991 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
7992
7993         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
7994
7995 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
7996
7997         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
7998         on 64 bit machines. Fixes part of #80738.
7999
8000         * basic.cs: Add regression test.
8001
8002 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
8003
8004         * inssel.brg basic.cs: Revert previous change to fix build.
8005
8006         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
8007         platforms.
8008         
8009         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
8010
8011         * basic.cs: Add new regression test.
8012
8013 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
8014
8015         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
8016         many arguments.
8017
8018 2007-03-16  Neale Ferguson <neale@sinenomine.net>
8019
8020         * cpu-s390x.md: Correct length of break instruction.
8021
8022 2007-03-16  Neale Ferguson <neale@sinenomine.net>
8023
8024         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
8025         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
8026
8027 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
8028
8029         * *.c: Begin WIN64 port.
8030         * mini.c:  Use correct register in profiler.
8031         * mini-amd64.c: No inline assembly on Win64.
8032         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
8033         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
8034         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
8035         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
8036         mono_arch_ip_from_context for Win64.
8037         
8038         Contributed under MIT/X11 license.
8039
8040 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
8041
8042         * exceptions-amd64.c (seh_handler): Ditto.
8043
8044         * exceptions-x86.c (seh_handler): Fix a memory leak.
8045
8046 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
8047
8048         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
8049         mini-s390x.c: fixed peephole optimizations to deal
8050         correctly with 1 and 2 byte reload avoidance.
8051
8052 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
8053
8054         * cpu-s390.md, cpu-s390x.md: update localloc length.
8055
8056 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8057
8058         * cpu-g4.md: added missing descriptions.
8059
8060 2007-03-14  Miguel de Icaza  <miguel@novell.com>
8061
8062         *  Makefile.am: Add support so the tail tests are not executed on
8063         PowerPC as that is a known limitation of the PowerPC port.
8064
8065 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
8066
8067         * runmdesc.bat:  Move to msvc directory.
8068         
8069 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
8070
8071         * runmdesc.bat:  Run executable that was produced by the current
8072         target and sent via an argument.
8073         
8074 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
8075
8076         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
8077         #81102.
8078
8079         * generics.2.cs: Add regression test.
8080
8081 2007-03-09  Wade berrier  <wberrier@novell.com>
8082
8083         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
8084
8085 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
8086
8087         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
8088         AOT code depends on this.
8089
8090 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
8091
8092         * mini.c: more precise tracking of types in the eval stack
8093         (part of fix for bug #81044).
8094
8095 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
8096
8097         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
8098
8099         * aot-compiler.c (encode_patch): Remove an obsolete comment.
8100
8101 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
8102
8103         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
8104
8105         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
8106
8107 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
8108
8109         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
8110         a pointer on 64 bit systems. Fixes #80190.
8111
8112         * iltests.il: Add new regression test.
8113
8114 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8115
8116         * mini.c: inline a constant for Environment.IsRunningOnWindows.
8117
8118 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
8119
8120         * trace.c: Remove an erroneous alignemnt check when tracing.
8121           Fixes --trace on OSX86.
8122
8123 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8124
8125         * mini-$(arch).h: initialize SP in context for all the archs.
8126
8127 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
8128
8129         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
8130         regressions in the thread tests.
8131
8132 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
8133
8134         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
8135         - fixed implementation of LOCALLOC opcode
8136         - implemented non-un compare for floats
8137         - code cleanup
8138         - implementation of FDIV and CKFINITE opcodes
8139         - fixes for latest mono updates
8140         - additional arch opcodes
8141
8142 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8143
8144         * Makefile.am: simplify and merge rules for cross-compilation.
8145
8146 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
8147
8148         * local-propagation.c: Actually *apply* the fix for bug 80591...
8149
8150 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8151
8152         * mini-exceptions.c: backuot part of the last change
8153         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
8154
8155 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
8156         * inssel.brg: Fix bug 59286.
8157
8158
8159 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
8160
8161         * mini-exceptions.c: patch from Zoltan to correctly check for
8162         stack boundaries (using the stack register, not the frame register),
8163         fixes bugs #80724, #79717.
8164
8165 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
8166
8167         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
8168         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
8169
8170         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
8171         presence of frame pointer elimination.
8172
8173 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
8174         
8175         * mini-x86.h: NetBSD UCONTEX_REG defines.
8176
8177 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
8178
8179         * inssel-amd64.brg: Fix amd64 build.
8180
8181 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
8182
8183         * mini.h: remove extern to workaround what looks likes gcc bug 26905
8184         on amd64.
8185
8186 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
8187
8188         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
8189         ends.
8190
8191         * mini-<ARCH>.c: Use mono_is_regsize_var ().
8192
8193 2007-01-30 Mark Mason <mason@broadcom.com>
8194
8195            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
8196            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
8197            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
8198            beginning support for CEE_JMP [not quite working yet]
8199            * tramp-mips.c: LMF handling now works
8200         
8201 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
8202
8203         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
8204
8205         * mini.h (NULLIFY_INS): New macro.
8206
8207 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8208
8209         * mini.c: statistical profiler fix for windows, patch
8210         from Tor Lillqvist (tml@novell.com).
8211
8212 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
8213         * local-propagation.c: Fix bug 80591.
8214
8215 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8216
8217         * Makefile.am: put back the --export-dynamic option as with
8218         the previous gmodule flags (thanks to Robert Jordan).
8219
8220 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
8221
8222         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
8223
8224         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
8225         simplify and speed up the local register allocator. Also rename some fields
8226         like iassign->vassign.
8227         
8228         * regalloc.c: Remove some functions which are no longer used since their
8229         inlined version is in mini-codegen.c.
8230         
8231         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
8232
8233         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
8234
8235 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
8236
8237         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
8238         narrowing. Fixes #80622.
8239
8240         * iltests.il: Add new regresssion test. 
8241
8242 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8243
8244         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
8245         debug-debugger.c, debug-debugger.h: warning fixes.
8246         * driver.c: updated copyright year and made it fit in one line.
8247
8248 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
8249
8250         * aot-runtime.c: updated to use mono-dl instead of gmodule.
8251
8252 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
8253
8254         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
8255
8256         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
8257
8258         * iltests.il: Add new test for bug #80507.
8259
8260 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8261
8262         * mini-arm.h: use soft-float also on vfp for now.
8263
8264 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8265
8266         * mini.c: fix some more soft-float issues.
8267
8268 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
8269
8270         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
8271
8272 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
8273         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
8274         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
8275         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
8276
8277 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
8278
8279         * mini-arm.c: typo fix.
8280
8281 2007-01-23  Neale Ferguson <neale@sinenomine.net>
8282
8283         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
8284
8285 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
8286
8287         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
8288         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
8289
8290         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
8291
8292         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
8293
8294         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
8295         
8296         * inssel.brg: Fix a warning.
8297
8298         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
8299
8300         * abcremoval.c ssa.c ssapre.c: Update after this change.
8301         
8302         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
8303
8304         * dominators.c (df_set): Use mono_bitset_union_fast.    
8305
8306 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8307
8308         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
8309         mini-codegen.c: reduce relocations and memory usage for the cpu
8310         description.
8311
8312 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
8313
8314         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
8315
8316         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
8317         to reduce their size.
8318
8319 2007-01-19 Mark Mason <mason@broadcom.com>
8320
8321         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
8322         * mini-mips.c: more configuration macros, support long conditional branches, additional
8323         asserts, fix epilog instrumentation.
8324         * mini-mips.h: use standard stack walk
8325         * cpu-mips.md: increase size of div, rem and conditional branches
8326         
8327 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
8328
8329         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
8330         to cpu spec data.
8331
8332 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
8333
8334         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
8335         (compile_method): Ditto.
8336
8337         * aot-runtime.c (decode_klass_info): Ditto.
8338
8339         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
8340         needed by the code generated by inssel.brg. Also fix a warning.
8341
8342 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
8343
8344         * mini.c: deal with enums that become genericinsts by
8345         being nested in a generic class (bug #79956).
8346
8347 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8348
8349         * mini.c: match the generic definition to check for
8350         private access with generic types (bug #78431).
8351
8352 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
8353
8354         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
8355         to make life easier for people cross-compiling that insist on not
8356         using scratchbox.
8357
8358 2007-01-17 Mark Mason <mason@broadcom.com>
8359
8360         * inssel-long.brg: patch to deal with mips missing flags
8361         * inssel-long32-mips.brg: implement overflow checks
8362         * insset-mips.brg: implement overflow checks
8363         * mini-mips.h: implement conditional exception handling
8364         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
8365           Remove unused code, minor cleanups.
8366         * exceptions-mips.c: minor cleanups
8367         * mini-ops.h: add mips conditional exception ops
8368         * cpu-mips.md: add mips conditional exception ops
8369
8370         
8371 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8372
8373         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
8374         to deal with mips missing of flags.
8375
8376 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8377
8378         * exceptions-ppc.c: execute fault handlers.
8379
8380 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
8381
8382         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
8383
8384 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
8385
8386         * mini.c: handle also floating point values in initialize_array.
8387
8388 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8389
8390         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
8391         array initialization and make it conditional on the intrins option.
8392
8393 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8394
8395         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
8396         relocations and put the patch info names close to the enum definition.
8397
8398 2007-01-15 Mark Mason <mason@broadcom.com>
8399
8400         * basic.cs, exceptions.cs: break up large tests to increase debugability.
8401
8402 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8403
8404         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
8405
8406 2007-01-12  Raja R Harinath  <rharinath@novell.com>
8407
8408         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
8409
8410 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
8411
8412         * Makefile.am: distribute the mips sources.
8413
8414 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8415
8416         * mini-codegen.h: handle bug #80489 here, by excluding ecx
8417         directly.
8418
8419 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
8420
8421         * cpu-x86.md: back out for now as this triggers other regressions.
8422
8423 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8424
8425         * cpu-x86.md: force src1 and dest regpair for long shift instructions
8426         to eax:edx, so ecx can't get allocated to them (bug #80489).
8427
8428 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
8429
8430         * mini.c, mini-exceptions.c: enabled running fault handlers
8431         (bug #80469).
8432
8433 2007-01-03  Miguel de Icaza  <miguel@novell.com>
8434
8435         * driver.c: If nothing fail, do not use the string "failed",
8436         because it makes it very annoying to view test result logs on the
8437         web. 
8438
8439 2006-12-30  Miguel de Icaza  <miguel@novell.com>
8440
8441         * debug-debugger.c (mono_debugger_main): Rename "main" to
8442         "main_method" to prevent a warning.
8443
8444         Remove a warning for unused field.
8445
8446 2006-12-28  Martin Baulig  <martin@ximian.com>
8447
8448         * debug-debugger.c
8449         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
8450
8451 2006-12-22  Martin Baulig  <martin@ximian.com>
8452
8453         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
8454         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
8455         seperate `.mdb_debug_info' section, so we can access it from the
8456         debugger even if the binary is stripped.
8457
8458         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
8459         from the `.mdb_debug_info' here to prevent the linker from
8460         removing that section.
8461
8462         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
8463         mdb-debug-info64.s.
8464
8465 2006-12-19  Robert Jordan  <robertj@gmx.net>
8466
8467         * mini-x86: enable the code to return small structures in
8468         registers for FreeBSD as well. Fixes bug #80278.
8469         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
8470
8471 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8472
8473         * mini-x86.c: align the stack when calling the profiler
8474         function instrumenting the prolog (on OSX).
8475
8476 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
8477
8478         * mini.c: emit a break opcode where Debugger.Break () is called.
8479
8480 2006-12-13  Miguel de Icaza  <miguel@novell.com>
8481
8482         * mini.c (mono_method_to_ir): Provide useful information on this
8483         assert, to prevent others from debugging like I did.
8484
8485 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8486
8487         * mini.c: enable code which was incorrectly commented
8488         (bug #80235).
8489
8490 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8491
8492         * mini-x86.c: enable on OSX, too, the code to return small
8493         structures in registers.
8494
8495 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
8496
8497         * mini-x86.c: remove the use of the dynamic code manager here, too.
8498
8499 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
8500
8501         * mini.h, debug-debugger.c, tramp-*.c: fixed 
8502         mono_debugger_create_notification_function() to use
8503         mono_global_codeman_reserve () instead of a dynamic code manager.
8504
8505 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
8506
8507         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
8508         ves_array_element_address() jit icall and use a generated
8509         managed method instead (which is about 4 times faster for a rank 3
8510         array access).
8511
8512 2006-11-29  Mark Mason  <mason@broadcom.com>
8513
8514         * basic-calls.cs: additional tests for passing
8515         structures as function arguments.
8516
8517 2006-11-29  Mark Mason  <mason@broadcom.com>
8518
8519         * mini-mips.h: disable custom exception handling
8520         * mini-mips.c: throw/rethrow should use jalr to call
8521         exception stubs.  Fixed bug with passing structures
8522         by value. More support for tracing floating point
8523         functions.
8524
8525 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8526
8527         * mini.c: fixed typo in the soft-float ldind.r4 handling
8528         (bug #80086).
8529
8530 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8531
8532         * mini.c, mini.h, driver.c: added --runtime command line
8533         option to select a different runtime than the autodetected one.
8534         * jit.h: added API for embedders to initialize with a specific
8535         runtime version.
8536
8537 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
8538
8539         * mini.c: handle also boxing of r4 values (bug #80024).
8540
8541 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
8542
8543         * mini-ppc.c: force indirect calls until we reserve
8544         enough address space for all the generated code.
8545
8546 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
8547
8548         * exceptions-arm.c: workaround bugs in the libc definition
8549         of struct ucontext.
8550
8551 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
8552
8553         * inssel.brg: fixes from me and Mark Mason.
8554
8555 2006-11-23  Dick Porter  <dick@ximian.com>
8556
8557         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
8558         semaphore display now we've fixed the initial value
8559
8560 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8561
8562         * inssel.brg: partially revert the last change to fix the build.
8563
8564 2006-11-21  Mark Mason  <mason@broadcom.com>
8565
8566         * inssel.brg: Add and use compare-and-branch macros to support
8567         architectures that do not have condition code registers (ie. MIPS).
8568         * *-mips.{c,brg,md}: Fix copyright statements
8569
8570 2006-11-20  Mark Mason  <mason@broadcom.com>
8571
8572         * Makefile.am: remove mini-codegen.c from list of MIPS sources
8573         * mini.c: Allow GET_CONTEXT to be specified by the arch port
8574         * mini.h: Added declaration for mono_print_ins()
8575         * mini-codegen.c: added ins_spec initializer for MIPS
8576         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
8577         vreg to be virtual and hreg to be non-virtual.
8578         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
8579         is not yet working/implemented correctly.
8580         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
8581         non-static, fixup calls to print_ins() from other parts in the file.
8582
8583 2006-11-20  Mark Mason  <mason@broadcom.com>
8584
8585         * basic-calls.cs: added tests for passing structures as arguments
8586         to calls.
8587
8588 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
8589
8590         * inssel-long32.brg: optimize signed division by power of two.
8591
8592 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
8593
8594         * mini-arm.c: added support for interworking with thumb code
8595         (mono must be still be built using the ARM instruction encoding).
8596
8597 2006-11-19  Miguel de Icaza  <miguel@novell.com>
8598
8599         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
8600         verifier has different rules for it.   Fixes a few verifier issues
8601         in the test suite.
8602
8603         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
8604         at the end, so people know what happened.
8605
8606 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
8607
8608         * brach-opts.c: in optimize_exception_target() make sure we
8609         are in a catch clause (fixes bug #79871).
8610
8611 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8612
8613         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
8614         more soft-float support fixes.
8615
8616 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
8617
8618         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
8619         that are passed half on the stack and half in registers.
8620
8621 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
8622
8623         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
8624         more mips integration work from Mark E Mason 
8625         <mark.e.mason@broadcom.com>.
8626
8627 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8628
8629         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
8630         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
8631         tramp-mips.c: added sources for the mips port, not
8632         integrated in the build yet. Contributed by
8633         Mark E Mason <mark.e.mason@broadcom.com>.
8634
8635 2006-11-14  Neale Ferguson <neale@sinenomine.net>
8636
8637         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
8638
8639 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8640
8641         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
8642         put the soft-float rules in its own file since it seems to
8643         break s390 compilation.
8644
8645 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8646
8647         * mini-arm.c: fixed wrnings.
8648
8649 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
8650
8651         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
8652         inssel-arm.brg: ARM support for soft-float.
8653
8654 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8655
8656         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
8657         loads and stores of 32 bit fp values.
8658
8659 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
8660
8661         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
8662
8663         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
8664         works. Fixes #79852 and #79463.
8665
8666 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8667
8668         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
8669         more soft-float support WIP and fixes.
8670
8671 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
8672
8673         * mini-arm.c: some VFP updates.
8674
8675 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
8676
8677         * mini-exceptions.c: 0 is a valid local var offset in some
8678         architectures, don't assert (bug #78508).
8679
8680 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
8681
8682         * exceptions-arm.c: fixed off by one error in stack walk code.
8683
8684 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
8685
8686         * mini.h, mini.c: more precise tracking of type load exceptions.
8687
8688 2006-11-03  Robert Jordan  <robertj@gmx.net>
8689
8690         * Makefile.am: [WIN32] Add monow.exe target.
8691         * driver.c: [WIN32] Don't detach the console when debugging.
8692         Fixes bug #79797.
8693         
8694 2006-10-30  Miguel de Icaza  <miguel@novell.com>
8695
8696         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
8697
8698 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
8699
8700         * aot-compiler.c (emit_method_info): Add a case missed earlier.
8701
8702         * driver.c (mini_regression): Fix --regression with AOT.
8703
8704         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
8705
8706 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
8707
8708         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
8709
8710         * mini-sparc.h: Don't use sigaction on sparc/linux.
8711
8712         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
8713
8714         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
8715
8716         * mini-exceptions.c: Add proper include files for getpid ().
8717
8718 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
8719
8720         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
8721         address instead of a MonoJitInfo* to avoid decoding the exception info for the
8722         method.
8723
8724         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
8725         name cache to reduce its size.
8726
8727         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8728
8729 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
8730
8731         * mini-x86.c: Save/restore the current LMF structure more efficiently using
8732         the mono_lmf TLS variable.
8733
8734         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
8735         trampoline lmf frames.  
8736
8737         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
8738
8739 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
8740
8741         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
8742         the mono_lmf TLS variable.
8743
8744         * mini-exceptions.c: Access the LMF structure through accessors.
8745
8746         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
8747         variable instead of in jit_tls->lmf.
8748
8749         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
8750         
8751         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
8752         trampoline lmf frames.
8753
8754         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
8755
8756 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
8757
8758        * mini.c trace.c mini-x86.c: Revert these too.
8759         
8760        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
8761        signature change.
8762
8763 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
8764
8765         * genmdesc.c: removed now dead code.
8766
8767 2006-10-09  Robert Jordan <robertj@gmx.net>
8768
8769         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
8770
8771 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
8772
8773         * mini.h: do not leave gaps in the opcode values.
8774
8775 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
8776
8777         * jit-icalls.h: flag functions as internal here, too.
8778
8779 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
8780
8781         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
8782         functions with the internal attribute.
8783
8784 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
8785
8786         * aot-compiler.c: fclose the file descriptor in the profile read loop.
8787
8788 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
8789
8790         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
8791         for soft-float.
8792
8793 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
8794
8795         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
8796         tail calls as on other platforms.
8797
8798         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
8799
8800         * iltests.il: Add a few tailcall tests.
8801
8802 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8803
8804         * driver.c: fix loop for old compilers (bug #79521).
8805
8806 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
8807
8808         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
8809
8810         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
8811
8812         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
8813         metadata without any code.
8814
8815         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
8816         more precise debugging information using gdb.
8817
8818 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
8819
8820         * inssel-ia64.brg: Make the helper methods static.
8821
8822 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8823
8824         * inssel-x86.brg: make the helper methods static.
8825
8826 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
8827
8828         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
8829
8830 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8831
8832         * mini.c: updates for monoburg changes.
8833         * inssel.brg: make a few helper functions static as they should.
8834
8835 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
8836
8837         * Makefile.am: Move mini-codegen.c to common_sources.
8838
8839 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8840
8841         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
8842         instructions.
8843         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
8844         mini-ppc.h: port to use the common local register allocator.
8845
8846 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8847
8848         * mini.h: Remove the comment too then.
8849
8850 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
8851
8852         * mini.h: put back backend.data which is to be used shortly and
8853         doesn't increase the size of MonoInst. If any 64 bit arch aligned
8854         pointers on 4 byte boundaries it'd have much bigger issues running
8855         and you can ifdef it out anyway.
8856
8857 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8858
8859         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
8860         MonoInst size by 4 bytes on 64 bit machines.
8861
8862 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
8863
8864         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
8865         replacement with more meaningful field names. Arch maintainers, please
8866         check the assigned names are good enough for your arch.
8867
8868 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8869
8870         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
8871         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
8872
8873 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8874
8875         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
8876         relocations and memory requirements, put the optimization flags
8877         definitions in their own file.
8878
8879 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
8880
8881         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
8882
8883         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
8884
8885 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
8886
8887         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
8888
8889 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
8890
8891         * inssel.brg: use the correct function to get the size of an item
8892         in an array, given an element class.
8893         * aot-compiler.c: do not access class->class_size directly.
8894
8895 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8896
8897         * mini.h, debug-mini.c: added a debugging function to print
8898         info about local variables and arguments in a jitted method.
8899
8900 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
8901
8902         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
8903
8904         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
8905
8906 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8907
8908         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
8909         inner and outer loops when passing vtypes.
8910
8911 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
8912
8913         * mini-ppc.c: take into account the cpu errata for cache flushing
8914         which caused some random errors (bug #79381).
8915
8916 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8917
8918         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
8919         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
8920
8921 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
8922
8923         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
8924         loaded.
8925
8926         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
8927         freebsd ports tree.
8928
8929         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
8930         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
8931
8932         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
8933         displacement.
8934
8935 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
8936
8937         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
8938
8939 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
8940
8941         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
8942         macro does not have to be changed during debugging.
8943
8944         * 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>.
8945
8946         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
8947
8948         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
8949         
8950         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
8951         MONO_ARCH_NO_EMULATE_MUL is defined.
8952
8953         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
8954
8955         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
8956
8957         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
8958
8959         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
8960         
8961 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
8962
8963         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
8964         stuff to mini-exceptions.c where it is used.
8965
8966         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
8967         setup code, the real one is in mini-exceptions.c.
8968
8969         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
8970         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
8971         some changes from the freebsd ports tree.
8972
8973         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
8974         constants.
8975         
8976         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
8977
8978 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
8979
8980         * mini.c: on Linux, check for /proc to be mounted
8981         (bug# 79351, novell bug#201204).
8982
8983 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
8984
8985         * mini.c: handle cases where pthread_attr_getstack() behaves
8986         incorrectly (bug #78096).
8987
8988 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
8989
8990         * mini-arm.c: support larger stack frames (bug #79272).
8991
8992 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
8993
8994         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
8995
8996         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
8997         tokens.
8998
8999         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
9000         mono_class_from_name () to find a class from its name.
9001
9002         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
9003
9004 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
9005
9006         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
9007
9008 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
9009
9010         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
9011
9012 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
9013
9014         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
9015         callinfo->trampoline.
9016
9017         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
9018         fixes #79271.
9019         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
9020         future.
9021
9022 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
9023
9024         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
9025
9026 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
9027
9028         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
9029         stats.method_trampolines, it is already done by the generic trampoline code.
9030
9031         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
9032         
9033 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
9034
9035         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
9036
9037         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
9038
9039         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
9040
9041         * mini.c (print_jit_stats): Print mscorlib mempool size too.
9042         
9043         * mini.c (print_jit_stats): Print new stats.
9044
9045         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
9046
9047 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
9048
9049         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
9050         Address on two dimensional arrays. Fixes #78729.
9051
9052         * mini.h (MonoCompile): Add a 'skip_visibility' field.
9053
9054         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
9055         a method.
9056
9057         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
9058
9059         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
9060         #79130.
9061         
9062         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
9063         a race condition.
9064         (mini_get_ldelema_ins): Ditto.
9065
9066 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
9067
9068         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
9069         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
9070         Fixes #79213.
9071
9072 2006-08-29 Neale Ferguson <neale@sinenomine.net>
9073
9074         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
9075         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
9076
9077         * exceptions-s390x.c: Cosmetic change.
9078
9079         * tramp-s390.c: Fix warning.
9080
9081         * cpu-s390.md: Correct length of mul_imm.
9082
9083 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
9084
9085         * aot-compiler.c: added binary writer with ELF backend
9086         implementation (only on Linux/x86 for now).
9087
9088 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
9089
9090         * Makefile.am: Don't run net 2.0 AOT tests.
9091
9092         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
9093         (mono_compile_assembly): Skip net 2.0 assemblies as well.
9094
9095         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
9096
9097 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9098
9099         * aot-compiler.c: simplified and refactored the asm-writing code
9100         to allow different backends.
9101
9102 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
9103
9104         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9105
9106         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
9107         little. Share patches of type TYPE_FROM_HANDLE as well.
9108
9109         * mini.c (mono_patch_info_equal): New helper function.
9110         (mono_patch_info_hash): Ditto.
9111
9112         * aot-compiler.c (emit_method_code): Fix s390 build.
9113
9114         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
9115         is not handled because it is stored as a flag and not as a type ctor. Fixes
9116         #79016.
9117
9118 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
9119
9120         * aot-compiler.c: Fix computation of GOT slot statistics.
9121         
9122         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
9123         Also remove support for not PIC AOT.
9124
9125         * mini.h: Bump AOT file format version.
9126
9127         * objects.cs: Add a test for #78990.
9128
9129         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
9130         (peter.dettman@iinet.net.au). Fixes #79087.
9131
9132         * basic-long.cs: Add a test for the above.
9133
9134 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
9135
9136         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
9137         
9138         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
9139         code somewhat.
9140
9141 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
9142
9143         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
9144         exceptions.
9145
9146 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
9147
9148         * mini.c: Don't verify COM proxy invoke calls
9149         
9150
9151 2006-08-10  Dick Porter  <dick@ximian.com>
9152
9153         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
9154         which process is holding semaphores locked.
9155
9156 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
9157
9158         * mini-ia64.c mini-amd64.c: Fix #79027.
9159
9160         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
9161
9162         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
9163
9164         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
9165         implicit arguments in a vararg call. Fixes #79027.
9166
9167 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
9168
9169         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
9170         (mono_get_array_new_va_signature): Ditto.
9171
9172 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
9173
9174         * aot-runtime.c: Call init_plt lazily.
9175
9176         * inssel-long.brg: Fix unsigned long->int conversion.
9177
9178         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
9179
9180         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
9181         that most data is now in the .rss/.data section.
9182
9183 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
9184
9185         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
9186
9187         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
9188
9189         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
9190
9191         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
9192
9193         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
9194         virtual call. Fixes #79010.
9195
9196         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
9197         and use the result as the this argument in the real call.
9198
9199         * generics.2.cs: Add a new test for #79010.
9200         
9201 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
9202
9203         * mini-x86.c: Fix a warning.
9204
9205         * aot-compiler.c: Add a bunch of statistics.
9206
9207         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
9208
9209 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
9210
9211         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
9212
9213 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
9214
9215         * 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>.
9216
9217 2006-07-13  Miguel de Icaza  <miguel@novell.com>
9218
9219         * mini.c (mono_method_to_ir): Obtain the original method in the
9220         CIL stream and use this to perform validation.
9221
9222         Fixed: #78816
9223
9224 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
9225
9226         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
9227         (mono_arch_call_opcode): Ditto.
9228
9229         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
9230         #78826.
9231
9232         * mini.c (mono_patch_info_dup_mp): New helper function.
9233         
9234         * aot-compiler.c (compile_method): Fix some of the memory allocated during
9235         compilation. Fixes #78827.
9236
9237 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
9238
9239         * declsec.c: Use original security informations for
9240           MONO_WRAPPER_MANAGED_TO_MANAGED.
9241
9242 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
9243
9244         * mini.c: Allow Com Interop methods/classes and
9245         don't verify COM wrapper calls
9246         
9247
9248 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
9249
9250         * inssel-long32.brg: Fix long->i4 checked conversion.
9251
9252         * exceptions.cs: Add a test for the above.
9253
9254 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
9255
9256         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
9257
9258         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
9259         leaks.
9260
9261         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
9262         #78775.
9263
9264 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
9265
9266         * mini.c: Fix solaris/x86 exception handling.
9267
9268         * Makefile.am: Get rid of $(ICU_LIBS).
9269
9270 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
9271
9272         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
9273         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
9274         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
9275
9276         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
9277
9278         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
9279         this function causes a SIGSEGV.
9280
9281 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
9282
9283         * mini.c: Remove unused solaris/x86 includes.
9284
9285 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
9286
9287         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
9288
9289 2006-06-20  Jb Evain  <jbevain@gmail.com>
9290
9291         * cpu-g4.md: fix max length of start_handler instruction.
9292
9293 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
9294         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
9295
9296 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
9297         * ssa.c: Fixed bug 78653 for SSA based deadce.
9298         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
9299         MonoInst.flags, used in SSA based deadce.
9300         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
9301         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
9302
9303 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
9304
9305         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
9306         it can end up using non executable memory on ppc64 systems
9307         running ppc32 userspace (fix from Johannes Berg).
9308
9309 2006-06-14  Dick Porter  <dick@ximian.com>
9310
9311         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
9312         4.1.1
9313
9314 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
9315         * mini.c: Made so that inline is locally disabled if it would
9316         trigger a .cctor, because too many apps depend on this behavior
9317         (which seems to be also the one of the MS CLR).
9318
9319 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
9320
9321         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
9322         No idea why this worked before.
9323
9324         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
9325         which branch to outer exception clauses since they could skip the
9326         inner finally clauses. Fixes #78633.
9327
9328         * exceptions.cs: Add a test for the above.
9329
9330         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
9331         Fixes #78629.
9332
9333         * iltests.il: Add a test for the above.
9334
9335 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
9336
9337         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
9338         after the end of a try bblock, to prevent asserts in mini_method_compile ().
9339
9340         * iltests.il: Add a test for the above.
9341
9342 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
9343
9344         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
9345         
9346         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
9347         methods as instrinsics.
9348
9349 2006-06-09  Wade Berrier <wberrier@novell.com>
9350
9351         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
9352         (simple-cee-ops.h ssapre-mini-ops.h)
9353
9354 2006-06-09  Neale Ferguson <neale@sinenomine.net>
9355
9356         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
9357         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
9358         instruction).
9359         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
9360         * cpu-s390x.md: Fix max. length values for a couple of instructions.
9361
9362 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
9363
9364         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
9365
9366 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
9367
9368         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
9369         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
9370         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
9371         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
9372         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
9373         of opcodes, so that bug 78549 should not happen again.
9374         * ssapre.c: Updated to use the renamed files.
9375
9376 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
9377
9378         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
9379         in OP_ATOMIC_EXCHANGE_I4.
9380
9381 2006-06-07  Wade Berrier <wberrier@novell.com>
9382
9383         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
9384         in mono_debugger_create_notification_function)
9385
9386 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
9387
9388         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
9389         
9390         * mini.c (type_from_stack_type): Disable some changes which do not
9391         seem to work.
9392
9393         * driver.c: Reenable opts.
9394
9395         * mini.h (MonoStackSlot): New structure to keep track of the verification state
9396         of the evaluation stack.
9397         
9398         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
9399         evaluation stack trace at entry to the bblock.
9400
9401         * mini.c (merge_stacks): New function to perform verification of stack merges.
9402         Turned off by default.
9403
9404         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
9405         STACK_MP.
9406         
9407 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
9408
9409         * local-propagation.c: Fixed bug 78549.
9410
9411 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
9412
9413         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
9414
9415 2006-06-02  Miguel de Icaza  <miguel@novell.com>
9416
9417         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
9418         tramp-arm.c, tramp-ia64.c
9419         (mono_debugger_create_notification_function): Update signature to
9420         new signature and use new protocol for creating the notification
9421         function.  
9422
9423         Should fix the build.
9424
9425 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
9426
9427         * exceptions-ppc.c (mono_jit_walk_stack)
9428         (ves_icall_get_frame_info): Fix the build
9429
9430 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
9431
9432         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
9433
9434 2006-05-31  Raja R Harinath  <rharinath@novell.com>
9435
9436         * il2tests.2.il: New file for generics CIL tests.  Add test for
9437         #78019.
9438         * Makefile.am: Update.
9439
9440         Fix #78019
9441         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
9442         to nullable types.
9443
9444 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
9445
9446         * aliasing.c: Fixed bug 78311.
9447
9448 2006-05-29  Martin Baulig  <martin@ximian.com>
9449
9450         * mini-exceptions.c (mono_find_jit_info): When computing the
9451         native offset, check whether we're actually inside the method's
9452         code; call mono_debug_print_stack_frame() to format the frame.
9453         (ves_icall_System_Exception_get_trace): Call
9454         mono_debug_print_stack_frame() to format the stack frame.
9455         (ves_icall_get_trace): Update to the new debugging API.
9456         (mono_jit_walk_stack_from_ctx): Likewise.
9457         (ves_icall_get_frame_info): Likewise.
9458
9459         * mini.c (get_method_from_ip): Use the new debugging API.
9460         (mono_print_method_from_ip): Likewise.
9461
9462         * exceptions-ppc.c
9463         (mono_jit_walk_stack): Use the new debugging API.
9464         (ves_icall_get_frame_info): Likewise.   
9465
9466 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
9467
9468         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
9469
9470 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
9471
9472         * mini.c: Added "limitator" to inline for debugging.
9473
9474 2006-05-24  Martin Baulig  <martin@ximian.com>
9475
9476         * debug-debugger.c (mono_debugger_init): Create a private,
9477         malloc()-based code manager for the notification function and
9478         intentionally leak it on exit.  This fixes the crash-on-exit race
9479         condition.
9480
9481         * tramp-amd64.c
9482         (mono_debugger_create_notification_function): Added
9483         `MonoCodeManager *' argument.
9484
9485         * tramp-x86.c
9486         (mono_debugger_create_notification_function): Added
9487         `MonoCodeManager *' argument.
9488
9489 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
9490
9491         * aliasing.c: Fixed 64 bit issue.
9492         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9493         default since all known bugs are fixed (one more time!).
9494
9495 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9496
9497         * mini.c: write barrier support.
9498
9499 2006-05-23  Martin Baulig  <martin@ximian.com>
9500
9501         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
9502         check at the top of the file.
9503
9504 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
9505
9506         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
9507         reverting changes without reason and without changelog entries.
9508
9509 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
9510
9511         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
9512         to a few opcodes. Fixes #78439.
9513
9514         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
9515         consistency with other archs.
9516
9517         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
9518
9519 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9520
9521         * debug-debugger.c: fix the build.
9522
9523 2006-05-17  Martin Baulig  <martin@ximian.com>
9524
9525         * debug-debugger.c
9526         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
9527         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
9528         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
9529         (debugger_attach): Call GC_mono_debugger_add_all_threads().
9530
9531 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
9532
9533         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
9534
9535 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
9536
9537         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
9538         MONO_TYPE_GENERICINST.
9539         
9540         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
9541         MONO_TYPE_GENERICINST.
9542
9543 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
9544
9545         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
9546         #78325.
9547
9548 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
9549
9550         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
9551         mempool.
9552         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
9553
9554 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
9555
9556         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
9557         mono_trace_cleanup ().
9558
9559         * iltests.il: Fix problem with the newly added test.
9560
9561         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
9562         due to register constraints, free up the previous hreg. Fixes #78314.
9563
9564         * iltests.il: Add new test for #78314.  
9565
9566         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
9567         Interlocked.Add. Fixes #78312.
9568
9569         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
9570         
9571 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
9572
9573         * inssel.brg (mini_emit_virtual_call): Fix a warning.
9574
9575 2006-05-05  Martin Baulig  <martin@ximian.com>
9576
9577         * debug-mini.c (mono_debug_open_block): New method.
9578
9579         * mini-amd64.c
9580         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9581         the beginning of each basic block.
9582
9583         * mini-x86.c
9584         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9585         the beginning of each basic block.
9586
9587 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9588
9589         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9590         default until I understand why they break the build on amd64.
9591
9592 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
9593
9594         * mini.c (mini_cleanup): Call mono_cleanup ().
9595
9596         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
9597         errors.
9598
9599 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9600
9601         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
9602         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9603         default since all known bugs are fixed, and I cannot reproduce bug
9604         77944... I'm asking Matt Hargett to test again after this commit.
9605
9606 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
9607
9608         * mini-codegen.c: Fixed typo that thrashed inline.
9609
9610 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
9611
9612         * dominators.c (compute_dominators): Avoid using a worklist since
9613         it is not correct in some cases. Instead, iterate over all bblocks as
9614         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
9615
9616 2006-04-28  Miguel de Icaza  <miguel@novell.com>
9617
9618         * mini.c (mono_jit_compile_method_inner): Use
9619         mono_prepare_exception_from_error that resets the value
9620         internally.
9621
9622 2006-04-27  Miguel de Icaza  <miguel@novell.com>
9623
9624         * mini.c: Move the mini_loader_error_to_exception to metadata. 
9625         
9626 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9627
9628         * aliasing.c: Fixed bug 78210.
9629
9630 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9631
9632         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9633         default until all their problems (or the ones they trigger) are fixed.
9634
9635 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
9636
9637         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
9638         
9639         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
9640         as loaded only after resolving patches since that could invoke the same method.
9641
9642         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
9643
9644         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
9645         functions.
9646
9647         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
9648         AOT loader.
9649
9650         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
9651         stack.
9652
9653         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
9654         made from AOT code through the PLT table.
9655
9656         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
9657         holding the plt offset when a call is made to the aot plt trampoline.
9658         
9659 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9660
9661         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
9662         amd64 AOT support.
9663
9664         * Makefile.am (common_sources): Fix build breakage.
9665
9666         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
9667         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
9668         intra-assembly calls if possible.
9669         
9670         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
9671
9672         * mini-trampolines.c: Handle PLT entries.
9673
9674         * mini.c: Avoid creating a GOT var for calls.
9675
9676         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
9677         from mscorlib code.
9678
9679         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
9680         from mscorlib code.
9681
9682         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
9683         AOT code.       
9684
9685         * mini.h: Bump AOT file format version.
9686         
9687         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
9688         covers more cases.
9689
9690 2006-04-25  Martin Baulig  <martin@ximian.com>
9691
9692         * driver.c: Disable copyprop, consprop and inline when running
9693         inside the debugger.
9694
9695 2006-04-25  Martin Baulig  <martin@ximian.com>
9696
9697         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
9698         with `get_current_thread' and added `detach'.
9699         (MonoDebuggerMetadataInfo): Added `thread_size',
9700         `thread_tid_offset', `thread_stack_ptr_offset' and
9701         `thread_end_stack_offset'.
9702
9703 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9704
9705         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
9706         aot-runtime.c.
9707
9708         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
9709         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
9710
9711         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
9712
9713         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
9714
9715         * aot.c: Add support for ADJUSTED_IID.  
9716
9717 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
9718
9719         * aot.c (emit_method_order): Don't align method_order_end.
9720
9721         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
9722         the interface ID changes.
9723
9724 2006-04-21  Dick Porter  <dick@ximian.com>
9725
9726         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
9727         cleaning up a thread.  Fixes the new part of bug 77470.
9728
9729 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
9730
9731         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
9732         to managed wrapper.
9733                      
9734 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
9735
9736         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
9737         
9738         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
9739         SIGSEGV. Fixes #78072.
9740
9741         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
9742         unregister our SIGABRT handler.
9743
9744 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
9745
9746         * mini.c: Disabled inline where it can alter the call stack in a
9747         way visible from managed code.
9748         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
9749         default.
9750
9751 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
9752
9753         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
9754         on other platforms. Fixes #78089.
9755
9756 2006-04-13  Martin Baulig  <martin@ximian.com>
9757
9758         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
9759         determine whether we're inside the debugger.
9760
9761         * debug-debugger.h
9762         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
9763
9764 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9765
9766         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
9767         handler clauses. Fixes #78024.
9768
9769         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
9770         in the CALL_MEMBASE opcodes. Fixes #78088.
9771         (mono_arch_get_vcall_slot_addr): Ditto.
9772
9773 2006-04-10  Martin Baulig  <martin@ximian.com>
9774
9775         * debug-debugger.c: The thread handling code has now been moved
9776         into ../metadata/threads.c.
9777
9778 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9779
9780         * driver.c (mono_main): Fix --with-gc=none build.
9781
9782         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
9783         (mono_spillvar_offset_float): Ditto.
9784         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
9785         hreg, not when its !global, since on ia64, there is a third category: stacked
9786         registers.      
9787
9788 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
9789
9790         * mini.c: set MonoInst->klass for load field address and a few other
9791         places.
9792
9793 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9794
9795         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
9796
9797 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
9798
9799         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
9800         the branch opt changes.
9801
9802 2006-04-06  Dick Porter  <dick@ximian.com>
9803
9804         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
9805         
9806         * wapihandles.c (mini_wapi_seminfo): 
9807         * driver.c (mono_main): Add semaphore info option
9808
9809 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
9810
9811         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
9812         branch optimization changes. Fixes #78009.
9813
9814 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9815
9816         * mini.c: ignore accessibility of methods in managed->native wrappers.
9817
9818 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
9819
9820         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
9821         
9822         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
9823
9824 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
9825
9826         * mini.c: Modify the branch optimizations to preserve the invariant that
9827         the entries inside the in_bb and out_bb arrays are unique.
9828         (mono_unlink_bblock): Avoid creation of new arrays.
9829
9830 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
9831
9832         * mini.c (mono_unlink_bblock): Fix regression caused by previous
9833         change (#77992).
9834
9835 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
9836
9837         * mini.c (optimize_branches): Remove the "optimizations" in
9838         the cbranch1/cbranch2 -> branch cases which were causing several
9839         problems in the past. Fixes #77986.
9840
9841 2006-03-31  Chris Toshok  <toshok@ximian.com>
9842
9843         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
9844         default optimizations :(
9845
9846 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
9847
9848         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
9849         branch.
9850
9851 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
9852
9853         * local-propagation.c: Added comments to structs and removed
9854         "Mono" prefixes from local tree mover types.
9855
9856 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
9857
9858         * Makefile.am (arch_sources): Define this for each architecture so 
9859         libmono_la_SOURCES is defined in one place.
9860
9861 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
9862
9863         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
9864         from handles/.
9865
9866 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
9867
9868         * driver.c: print the GC name supplied by configure.
9869
9870 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
9871
9872         * local-propagation.c: Added tree mover, and moved here all the
9873         local propagation code from mini.c
9874         * mini.c: Added support for treeprop, and moved all the local
9875         propagation code to local-propagation.c
9876         * mini.h: Added support for treeprop
9877         * driver.c: Added support for treeprop, enabled consprop, copyprop,
9878         treeprop, inline and deadce by default
9879         * Makefile.am: Added local-propagation.c
9880
9881 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
9882
9883         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
9884
9885 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
9886
9887         * debug-debugger.c: make it compile without the Boehm GC.
9888
9889 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
9890
9891         * mini.c: fixed issue with mismatch when an icall is registered
9892         with multiple names but same address.
9893
9894 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
9895
9896         * declsec.c, mini-exceptions.c: use write barrier to set reference
9897         fields of managed objects.
9898
9899 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9900
9901         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
9902         (can_access_internals): Fix a warning.
9903
9904         * mini.c (print_method_from_ip): Rename this to 
9905         mono_print_method_from_ip so it gets exported.
9906
9907         * trace.c: Deal with strings inside StringBuilder's containing garbage
9908         and fix memory leaks. Fixes #77848.
9909
9910 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9911
9912         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
9913         fixes #77787.
9914
9915 2006-03-16 Neale Ferguson <neale@sinenomine.net>
9916         
9917         * mini-s390.c: Remove OP_X86_TEST_NULL.
9918
9919 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
9920
9921         * mini.c: use the correct GetHashCode() for the moving collector.
9922
9923 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
9924
9925         * liveness.c: Regalloc spill cost tuning.
9926
9927 2006-03-15 Neale Ferguson <neale@sinenomine.net>
9928         
9929         * mini-s390x.h: Correct S390_LONG macro.
9930
9931         * mini-s390x.c: Cleanup unused code.
9932
9933 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
9934
9935         * jit-icalls.h: New file.
9936
9937         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
9938         icalls and include that instead of including jit-icalls.c.
9939
9940         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
9941         OP_X86 opcodes.
9942
9943 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
9944
9945         * mini.c: when checking for member accessibility, also check for
9946         friend assemblies and for explicit interface implementations.
9947
9948 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
9949
9950         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
9951
9952         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
9953
9954         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
9955         common cases are done first.    
9956
9957         * mini-ops.h: Only define platform specific opcodes on the given platform.
9958
9959         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
9960         branch.
9961         
9962 2006-03-14  Martin Baulig  <martin@ximian.com>
9963
9964         Revert Paolo's change from r57348:
9965
9966         * mini.h: don't use gboolean for bitfields.
9967         * mini.c: verifier changes for fields and methods accessibility.
9968
9969 2006-03-13  Neale Ferguson <neale@sinenomine.net>
9970
9971         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
9972
9973         * mini-s390x.c: Fix conv_r_un.
9974
9975         * cpu-s390, cpu-s390x.md: Fix lengths.
9976
9977 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
9978
9979         * mini.c: nested types have access to all the nesting
9980         levels, not just the enclosing types.
9981
9982 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
9983
9984         * mini.c: added a few more verification checks.
9985
9986 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
9987
9988         * liveness.c: Merge optimizations from the linear-il branch.
9989
9990 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
9991
9992         * mini-ia64.c (emit_call): Add a comment.
9993
9994         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
9995
9996         * tramp-ia64.c: Fix some warnings.
9997
9998 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
9999
10000         * mini.h: don't use gboolean for bitfields.
10001         * mini.c: verifier changes for fields and methods accessibility.
10002
10003 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
10004
10005         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
10006         lazy icall wrapper changes.
10007
10008         * dominators.c: Replace all the dominator algorithms with faster
10009         ones from the linear-il branch.
10010
10011         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
10012         the mempool.
10013
10014         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
10015         common cases are done first.
10016
10017         * mini-amd64.c: Fix some warnings.
10018
10019         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
10020         from the mempool.
10021
10022         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
10023         added code.
10024
10025         * mini.h: Add a missing prototype.
10026
10027 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
10028
10029         * mini.c: Compile icall wrappers lazily.
10030
10031         * mini-codegen.c: Use printf instead of g_print since its much faster.
10032
10033         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
10034         function.
10035
10036         * mini.c (optimize_branches): Cache the negative result from 
10037         remove_block_if_useless ().
10038
10039         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
10040         Also fix some bblock linking issues.
10041
10042         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
10043         assembly files.
10044
10045         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
10046
10047         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
10048         accessed fields first, for better cache behavior.
10049         
10050 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10051
10052         * mini.c: speedup IList<T> array accesses.
10053
10054 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
10055
10056         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
10057         inline_costs counter. Fixes #77190.
10058
10059 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
10060
10061         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
10062         trace messages. Fixes #77706.
10063
10064 2006-03-04  Martin Baulig  <martin@ximian.com>
10065
10066         * tramp-amd64.c, tramp-x86.c
10067         (mono_debugger_create_notification_function): Use
10068         mono_global_codeman_reserve() to allocate a buffer at runtime and
10069         return it.
10070
10071         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
10072
10073         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
10074         notification function at runtime and then call `initialize' in the
10075         `MONO_DEBUGGER__debugger_info' vtable.
10076
10077 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
10078
10079         * iltests.il: Fix a visibility problem.
10080
10081 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
10082
10083         * driver.c, mini.c: add hooks for the counters API.
10084
10085 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
10086
10087         * driver.c: show disabled options.
10088
10089 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10090
10091         * linear-scan.c: always use cost-driven selection.
10092
10093 2006-02-28  Raja R Harinath  <rharinath@novell.com>
10094
10095         * jit-icalls.c (helper_compile_generic_method): Revert change from
10096         2006-02-24.
10097
10098 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
10099
10100         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
10101
10102 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
10103
10104         * inssel.brg: style fixes, mostly to force the updated monoburg
10105         to run for people using svn.
10106
10107 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
10108
10109         * mini.c: match monoburg changes.
10110
10111 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10112
10113         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
10114         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
10115         declaration in the header file.
10116
10117 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
10118
10119         * helpers.c: reduce relocations and mem usage.
10120
10121 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
10122
10123         * mini.h, mini-codegen.c: disable logging features if
10124         requested by configure.
10125
10126 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
10127
10128         * mini.c: tiny verifier changes.
10129
10130 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10131
10132         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
10133         cpu-pentium.md: stack alignment changes for osx/x86,
10134         partially from Geoff Norton <gnorton@customerdna.com>.
10135
10136 2006-02-24  Raja R Harinath  <harinath@gmail.com>
10137
10138         * jit-icalls.c (helper_compile_generic_method): Update to changes
10139         in metadata/class.c.
10140
10141 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
10142         
10143         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
10144         
10145         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
10146         interface calls with large offsets.
10147
10148 2006-02-23  Raja R Harinath  <rharinath@novell.com>
10149
10150         * jit-icalls.c (helper_compile_generic_method): Document the
10151         special-case we depend on so that we can inflate the method twice
10152         with the same context with no bad side-effects.
10153
10154 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
10155
10156         * mini-x86.c, mini-amd64.c: fix for case when xen support
10157         is disabled.
10158
10159 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
10160
10161         * mini-x86.c, mini-amd64.c: generate code to access tls items
10162         in a faster way for Xen systems.
10163
10164 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
10165
10166         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
10167         updates and compilation fixes for the OSX/x86 port, mostly from
10168         Geoff Norton <gnorton@customerdna.com>.
10169
10170 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10171
10172         * inssel.brg: faster interface call implementation
10173         to sync with the interface_offsets MonoVTable changes.
10174
10175 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
10176
10177         * mini.c: more verification checks.
10178
10179 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
10180
10181         * mini.c: added a few more verification checks.
10182
10183 2006-02-17      Neale Ferguson <neale@sinenomine.net>
10184
10185         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
10186         facility on the processor and use it if available.
10187
10188 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10189
10190         * driver.c, aot.c, mini.c: throw exception if the IL code is
10191         invalid or unverifiable.
10192
10193 2006-02-17  Raja R Harinath  <rharinath@novell.com>
10194
10195         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
10196         m.StructField.
10197
10198 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
10199
10200         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
10201
10202 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10203
10204         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
10205         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
10206         handling of instantiated generic valuetypes.
10207
10208 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
10209
10210         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
10211         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
10212         instead.
10213
10214         * generics.2.cs: Revert the nullable reftypes tests.
10215
10216 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
10217
10218         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
10219         using __builtin_frame_address (1) as it doesn't work in the presence
10220         of optimizations. Hopefully fixes #77273.
10221
10222         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
10223         -> generics.cs change as it doesn't work with some automake versions.
10224
10225 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10226
10227         * mini.c: handle systems that sue a different way to
10228         retrieve the stack address of the current thread.
10229
10230 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
10231
10232         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
10233         it specially in the makefile.
10234
10235         * generics.2.cs: Add tests for nullable reference types.
10236
10237 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10238
10239         * mini.c: always handle the case when mono_jit_init()
10240         is called in a thread different from the main thread,
10241         confusing libgc (bug #77309).
10242
10243 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
10244
10245         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
10246
10247 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10248
10249         * mini.c: change optimize_branches () to use a single loop
10250         and introduce a new optimization to simplify some range checks.
10251
10252 2006-02-03  Martin Baulig  <martin@ximian.com>
10253
10254         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
10255         and merged with debugger_thread_manager_add_thread().
10256         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
10257         inform the debugger about the main thread.
10258
10259 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
10260
10261         * basic.cs: Add test for div.un/rem.un constant folding.
10262
10263 2006-02-03  Neale Ferguson <neale@sinenomine.net>
10264
10265         * cpu-s390x.md: correct int_xor_imm length
10266
10267 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
10268
10269         * generics.2.cs: New test for #77442.
10270
10271         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
10272         #77442.
10273
10274 2006-02-02  Martin Baulig  <martin@ximian.com>
10275
10276         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
10277         <mono/metadata/mono-debug-debugger.h>   
10278
10279         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
10280
10281 2006-02-02  Martin Baulig  <martin@ximian.com>
10282
10283         * debug-debugger.h: New header file for debug-debugger.c.
10284
10285         * debug-debugger.c: Big API cleanup; don't run the managed Main()
10286         function is a separate thread anymore; add support for attaching.
10287
10288 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
10289
10290         * tramp-x86.c: Fix a warning.
10291
10292 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
10293
10294         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
10295         on very large methods.
10296
10297         * aot.c (load_patch_info): Fix a warning.
10298
10299 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
10300
10301         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
10302         mini-ops.h: alu membase optimizations.
10303
10304 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
10305
10306         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
10307         to speedup StringBuilder.
10308
10309 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
10310
10311         * dominators.c (mono_compute_natural_loops): Fix detection of
10312         loop body start blocks.
10313
10314         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
10315
10316 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
10317
10318         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
10319         #75145.
10320
10321 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
10322
10323         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10324
10325 2006-01-25  Martin Baulig  <martin@ximian.com>
10326
10327         * debug-debugger.c: Moved the `MonoDebuggerManager' and
10328         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
10329         started to cleanup this file a little bit.
10330
10331 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
10332
10333         * mini.c: optimize a codepath frequently happening in generics code.
10334
10335 2006-01-23  Martin Baulig  <martin@ximian.com>
10336
10337         * Makefile.am: Only compile debug-debugger.c on supported platforms.
10338
10339         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
10340         functions directly.
10341
10342         * driver.c: debug-debugger.c is only available if
10343         `MONO_DEBUGGER_SUPPORTED' is defined.   
10344
10345 2006-01-23  Martin Baulig  <martin@ximian.com>
10346
10347         * debug-debugger.c: Only enable this on platforms where the Mono
10348         Debugger is working (x86 and x86_64).
10349
10350 2006-01-21  Martin Baulig  <martin@ximian.com>
10351
10352         The Mono Debugger is now using the normal `mono' instead of the
10353         `mono-debugger-mini-wrapper' when executing managed code.
10354
10355         * debug-debugger.c: New file; previously known as
10356         debugger/wrapper/wrapper.c.
10357
10358         * debug-mini.c (mono_init_debugger): Removed.
10359
10360         * driver.c (mono_main): Added new `--inside-mdb' command line
10361         argument which is used when running inside the debugger.
10362
10363 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
10364
10365         * liveness.c (mono_analyze_liveness): Remove some unused data
10366         structures.
10367
10368 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
10369
10370         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
10371
10372 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
10373
10374         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
10375         depends on implementation details of monobitset.
10376
10377         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
10378         Fixes #77271.
10379
10380 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
10381
10382         * liveness.c: Update after monobitset changes.
10383
10384 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
10385
10386         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
10387
10388 2006-01-11 Neale Ferguson <neale@sinenomine.net>
10389
10390         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
10391
10392         * mini-s390x.c: Remove warning messages.
10393
10394 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
10395
10396         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
10397
10398 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
10399
10400         * generics.2.cs: Add ldelem/stelem_any test.
10401
10402 2006-01-10 Neale Ferguson <neale@sinenomine.net>
10403
10404         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
10405
10406 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
10407
10408         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
10409         
10410 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
10411
10412         * generics.2.cs: Reenable vtype tests.
10413
10414         * inssel-x86.brg: Remove an icorrect valuetype rule.
10415
10416 2006-01-06 Neale Ferguson <neale@sinenomine.net>
10417
10418         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
10419         initial support for OP_ABS.
10420
10421 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10422
10423         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
10424
10425 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10426
10427         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
10428         conversion and implement LADD/LSUB.
10429
10430         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
10431         architectures.
10432
10433 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10434
10435         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
10436
10437         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
10438         architectures.
10439
10440 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10441
10442         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
10443         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
10444         (stack walk problem).
10445
10446 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
10447
10448         * aot.c (mono_aot_load_method): Fix a warning.
10449
10450 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10451
10452         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
10453
10454 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10455
10456         * iltests.il: Add test for #77148.
10457
10458         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
10459         #77148.
10460
10461 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10462
10463         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
10464
10465 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10466
10467         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
10468         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
10469
10470         * basic-long.cs: Add lconv-to-r4/r8 tests.
10471
10472 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10473
10474         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
10475
10476         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
10477         here as on other archs.
10478
10479 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10480
10481         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
10482
10483 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10484
10485         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
10486         
10487         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
10488
10489         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
10490         instrument_prolog; Add memory_barrier instruction.
10491
10492 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
10493
10494         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
10495
10496 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
10497
10498         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
10499
10500         * aliasing.c inssel.brg: Fix warnings.
10501
10502         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
10503         could skip initialization of some parts of memory.
10504
10505         * mini.c mini-ia64.c: Fix warnings.
10506
10507         * inssel-sparc.brg: Add an implementation of lneg which actually works.
10508
10509 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
10510
10511         * aliasing.c (mono_build_aliasing_information): Add a workaround for
10512         a crash seen on sparc.
10513
10514         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
10515         
10516         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
10517
10518 2005-12-21 Neale Ferguson <neale@sinenomine.net>
10519
10520         * mini-ops.h: Add s390_backchain instruction
10521
10522         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
10523
10524         * cpu-s390.md: Add s390_backchain instruction
10525
10526         * mini-s390.c: Significant ABI changes
10527
10528         * mini-s390.h: Cater for zero length structures
10529
10530 2005-12-20 Neale Ferguson <neale@sinenomine.net>
10531
10532         * mini-s390.c: ABI fixes
10533
10534         * inssel-s390.brg: Remove debug statements
10535
10536         * cpu-s390.md: Fix length of ATOMIC_xx operations
10537
10538 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
10539
10540         * basic-float.cs: Add float<->long conversion tests.
10541
10542 2005-12-16 Neale Ferguson <neale@sinenomine.net>
10543
10544         * mini-s390.c: Fix LOCALLOC processing.
10545
10546         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
10547
10548 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
10549
10550         * iltests.il: Add tests for some opcodes not covered by the other
10551         tests.
10552
10553 2005-12-15 Neale Ferguson <neale@sinenomine.net>
10554
10555         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
10556         register loading for Tail processing; Correct trace output.
10557
10558         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
10559
10560         * cpu-s390.md: Correct size of jmp instruction. 
10561
10562 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10563
10564         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
10565
10566 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10567
10568         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
10569           Bring s390 up to current level.
10570
10571 2005-12-12  Zltan Varga  <vargaz@gmail.com>
10572
10573         * generics.2.cs: Disable the newly added tests as they do not work yet.
10574         
10575         * generics.2.cs: Add valuetype tests.
10576
10577 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
10578
10579         * basic-long.cs: Add i4->u8 test.
10580
10581         * objects.cs: Add tests for JIT intrinsic.
10582
10583         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
10584         optimizations lost by a mistake.
10585
10586 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
10587
10588         * basic-long.cs: Remove a test moved to objects.cs.
10589
10590         * arrays.cs: Add more array tests.
10591
10592 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
10593
10594         * arrays.cs: Add new tests for multi-dimensional arrays.
10595
10596 2005-12-06  Raja R Harinath  <rharinath@novell.com>
10597
10598         * Makefile.am (test_sources2): Add generics.2.cs.
10599         (EXTRA_DIST): Add test_sources2.
10600
10601 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
10602
10603         Support for boxing and unboxing nullable types as well as the
10604         isinst operation on nullables, per the CLI ammendment.
10605
10606         * inssel.brg (CEE_ISINST): Special case for nullable
10607
10608         * mini.c (handle_unbox_nullable): new method
10609         (handle_box): Special case for nullable types
10610         (mono_method_to_ir): Call handle_unbox_nullable in correct
10611         places.
10612
10613         * generics.2.cs: New test suite
10614
10615         * Makefile.am: Support for regression tests with generics.
10616
10617 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
10618
10619         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
10620         allocated to registers. Fixes #76800.
10621
10622 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
10623
10624         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
10625
10626 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
10627
10628         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
10629         of platforms.
10630
10631 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
10632
10633         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
10634         objects.cs.
10635
10636         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
10637         
10638         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
10639 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
10640
10641         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
10642         single precision before storing to a single precision location.
10643
10644 2005-11-28  Raja R Harinath  <rharinath@novell.com>
10645
10646         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
10647
10648 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
10649
10650         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
10651         correct files.
10652
10653         * basic.cs: Remove test_0_byte_compares test which was moved to
10654         objects.cs a long time ago.
10655
10656 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
10657
10658         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10659
10660 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
10661
10662         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
10663         handlers are called.
10664
10665         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
10666         throwing code.
10667
10668          * mini-ia64.c: Add support for the throw->branch exception 
10669         optimization.   
10670
10671         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
10672
10673 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10674
10675         * mini.c: Enabled "fastpath" deadce :-)
10676         
10677 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10678
10679         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
10680         alias analysis pass to support it.
10681         * mini.h: Likewise.
10682         * ssa.c: Likewise.
10683         * liveness.c: Likewise (liveness computation can use aliasing
10684         information to be more accurate).
10685         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
10686         moreover made so that "--compile-all" uses the given optimization
10687         flags and not the default ones.
10688         * aliasing.c: Alias analysis (new file).
10689         * aliasing.h: Likewise.
10690         * Makefile.am: added "aliasing.c" and "aliasing.h".
10691         
10692 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
10693
10694         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
10695         OP_L opcodes.
10696
10697 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
10698
10699         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
10700         fp >= end_of_stack exit condition, as it is not needed, and it might
10701         become true for fp eliminated frames.
10702
10703 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10704
10705         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
10706         coded offsets.
10707
10708 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
10709
10710         * mini-arm.c: fixed alignment of doubles/longs to match
10711         the C ABI (bug #76635).
10712
10713 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
10714
10715         * aot.c: fix compilation with --enable-minimal=aot.
10716
10717 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
10718
10719         * mini-arm.c: fixed compatibility with the new
10720         floating point emulator package for compares.
10721
10722 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
10723
10724         * mini.c : reverted sig->pinvoke changes (r51396-51397).
10725
10726 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
10727
10728         * mini-exceptions.c (print_stack_frame): Output to stderr.
10729         (mono_handle_native_sigsegv): Ditto.
10730
10731 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10732
10733         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
10734         OP_LCONV_TO_OVF_I implementation.
10735
10736         * mini-amd64.c: Add support for the throw->branch exception 
10737         optimization.
10738
10739         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
10740         when the catch clause catches a more general exception, i.e. Object.
10741
10742 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
10743
10744         * cpu-ia64.md: Remove unused opcodes.
10745
10746         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
10747         specific defines for architectures defining USE_SIGACTION.
10748
10749         * mini-ia64.c: Fix some warnings.
10750
10751         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
10752         version seemed to skip a frame.
10753
10754 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10755
10756         * mini.c: Clean up the usage of sig->pinvoke flag. Now
10757         only calls which are made to native code use this flag.
10758
10759 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10760
10761         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
10762         varargs methods as well.
10763         
10764         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
10765         which have save_lmf set. Reorganize methods prologs a bit.
10766
10767         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
10768         debugger to the proper place.
10769
10770 2005-10-29  Martin Baulig  <martin@ximian.com>
10771
10772         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
10773         when running inside the debugger until the debugger has support
10774         for it.
10775
10776 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10777
10778         * mini.h: Fix a warning.
10779
10780 2005-10-24  Miguel de Icaza  <miguel@novell.com>
10781
10782         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
10783         we expose publicly, this returns the string.
10784
10785 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
10786
10787         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
10788         with fp elimination.
10789
10790 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10791
10792         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
10793         native stacktrace using the glibc 'backtrace' function if available.
10794
10795 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
10796
10797         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
10798
10799         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
10800         handle SIGSEGVs received while in native code.
10801
10802         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
10803         code, call mono_handle_native_sigsegv which will abort the runtime
10804         after printing some diagnostics, instead of converting it into a
10805         confusing NullReferenceException.
10806
10807 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10808
10809         * cpu-pentium.md: Remove unused opcodes.
10810
10811 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
10812
10813         * mini-amd64.h (MonoLMF): Add rsp field.
10814
10815         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
10816         the lmf too.
10817
10818 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
10819
10820         * mini-codegen.c (get_register_spilling): Fix some warnings.
10821
10822 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
10823
10824         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
10825         elimination during exception handling. Enable fp elimination by
10826         default.
10827
10828         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
10829         elimination.
10830
10831 2005-10-16  Martin Baulig  <martin@ximian.com>
10832
10833         * mini-exceptions.c
10834         (mono_debugger_run_finally): New public method for the debugger.
10835
10836 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10837
10838         * debug-mini.c (mono_debug_init_method): Fix warning.
10839
10840         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
10841         the 'exname' parameter const to fix some warnings.
10842
10843 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
10844
10845         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
10846         introduced by the previous patch.
10847
10848 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
10849
10850         * basic-float.cs: Add test for precision of float arithmetic.
10851
10852         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
10853         when loading/storing single values from/to memory.
10854
10855         * mini.c (mono_jit_compile_method_with_opt): Create the function
10856         pointers in the correct domain.
10857
10858 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10859
10860         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
10861         introduced by previous patch.
10862         
10863         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
10864         when out_filter_idx is NULL.
10865
10866         * mini-exceptions.c: Don't run filter clauses twice during exception
10867         handling. Fixes #75755.
10868
10869 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10870
10871         * aot.c: Add support for ldflda wrappers.
10872
10873         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
10874         #75902.
10875
10876 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
10877
10878         * mini.c, mini.h: do not consider exception handlers blocks when
10879         setting up interface variables.
10880
10881 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
10882
10883         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
10884
10885 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
10886
10887         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
10888         causes a regression.
10889
10890         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
10891
10892 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
10893
10894         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
10895         of the OP_P definitions.
10896
10897         * TODO: Add a proposal for dealing with the CEE/OP mess.
10898
10899         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
10900         optimizations from the x86 port.
10901
10902         * cpu-amd64.md: Ditto.
10903
10904         * basic.cs basic-long.cs: Add tests.
10905
10906 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
10907
10908         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
10909         Patrik Torstensson's implementation of my exception-handling
10910         optimization idea, when the exception object is not used
10911         (bug #62150).
10912
10913 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
10914
10915         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
10916         of the mul_imm optimizations from the old jit.
10917
10918 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
10919
10920         * mini.c, liveness.c: patch by Patrik Torstensson and
10921         Zoltan Varga to improve performance in methods with
10922         exception clauses.
10923
10924 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10925
10926         * driver.c: Remove 'Globalization' entry from --version.
10927
10928 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
10929
10930         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
10931         there is a profiler interested in JIT events.
10932
10933         * aot.c: Load profile files produced by the AOT profiling module, and
10934         reorder methods based on the profiling info. Add a 'method_order' table
10935         to the AOT file to make mono_aot_find_jit_info work with the reordered
10936         methods.
10937
10938         * mini.h: Bump AOT file version info.
10939
10940 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
10941
10942         * mini-arm.h: work around what looks like a gcc bug when optimizations
10943         are enabled.
10944
10945 2005-09-28  Raja R Harinath  <rharinath@novell.com>
10946
10947         * Makefile.am (AM_CFLAGS): Don't use += to append inside
10948         conditionals.  Use ...
10949         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
10950
10951 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
10952
10953         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
10954         to determine the amount of memory to copy when passing valuetypes.
10955
10956         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
10957         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
10958
10959 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
10960
10961         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
10962         information about aot.
10963
10964 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
10965
10966         * *.c: Replace the use of {Enter,Leave}CriticalSection with
10967         macros. This will allow a deadlock debugger to easily be plugged
10968         in.
10969
10970 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
10971
10972         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
10973
10974 2005-09-27  Raja R Harinath  <rharinath@novell.com>
10975
10976         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
10977         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
10978         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
10979         ($(arch_built)) [CROSS_COMPILING]: Error out.
10980
10981 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
10982
10983         * aot.c: Add support for the no_special_static flag for classes.
10984
10985 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10986
10987         * Reapply reverted patches.
10988
10989         * *: Revert r50174 as well.
10990
10991         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
10992
10993 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10994
10995         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
10996
10997 2005-09-23  Miguel de Icaza  <miguel@novell.com>
10998
10999         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
11000         part of the SIG_HANDLER_SIGNATURE.  
11001
11002 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
11003
11004         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
11005         statistics.
11006
11007         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
11008         introduced by previous patch.
11009
11010 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
11011
11012         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
11013         saved registers too.
11014
11015         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
11016         upon the information returned by get_call_info ().
11017         
11018         * mini-x86.c (add_float): Fix stack size calculation.
11019         (mono_arch_call_opcode): Rewrite this so it works based up the
11020         information returned by get_call_info ().
11021         (mono_arch_get_this_vret_args): Ditto.
11022
11023 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
11024
11025         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
11026         in cinfo to determine the registers which need to be used.
11027
11028 2005-09-20  Miguel de Icaza  <miguel@novell.com>
11029
11030         * driver.c (mono_main): Add --server and --desktop flags. 
11031
11032 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
11033
11034         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
11035         registers as global registers.
11036
11037         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
11038         longer needed with the new register allocator.
11039
11040         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
11041
11042         * cpu-ia64.md: Remove unused opcodes.
11043         
11044         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
11045         
11046 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
11047
11048         * cpu-amd64.md: Remove unused opcodes.
11049
11050         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
11051         needed with the new register allocator.
11052
11053         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
11054         reg-reg moves.
11055
11056 2005-09-16  Raja R Harinath  <rharinath@novell.com>
11057
11058         * Makefile.am (check-local): Don't invoke semdel-wrapper.
11059
11060 2005-09-16  Martin Baulig  <martin@ximian.com>
11061
11062         * exceptions-amd64.c
11063         (throw_exception): Don't call mono_debugger_throw_exception() if
11064         we're a rethrow - see the FIXME in the code.
11065
11066 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
11067
11068         * mini.c (mono_init_exceptions): This only works on some architectures.
11069         
11070 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
11073         on ia64.
11074
11075         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
11076
11077         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
11078         now in mini-exceptions.c.
11079
11080 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
11081
11082         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
11083         now in mini-exceptions.c.
11084
11085 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
11086
11087         * exceptions-x86.c: Applied patch from Patrik Torstensson 
11088         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
11089
11090         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
11091         code into mini-exceptions.c. Add some assertions to it.
11092
11093 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
11094
11095         * aot.c (emit_section_change): Applied patch from "The Software Team" 
11096         (<software@solmersa.com>). Fix as errors on windows.
11097
11098 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
11099
11100         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
11101         method info into the LMF.
11102
11103 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11104         
11105         * mini-ia64.c: Add proper unwind info for method epilogs.
11106
11107         * exceptions-ia64.c: Add some code to help debugging.
11108         
11109         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
11110
11111         * mini-exceptions.c: Fix warning.
11112
11113 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
11114
11115         * mini.c: Really fix build.
11116
11117         * mini-x86.c mini-amd64.c: Fix build.
11118
11119 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11120
11121         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
11122
11123         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
11124         some Interlocked methods as intrinsics.
11125
11126         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
11127         for Thread methods as well.
11128
11129         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
11130
11131         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
11132
11133         * mini-ia64.c mini-x86.c mini-amd64.c 
11134         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
11135         OP_MEMORY_BARRIER.
11136         
11137         * mini.c (mono_init_exceptions): Fix build breakage.
11138
11139 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
11140
11141         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
11142         of instructions. Use the new ia64_unw_op macros for emitting unwind
11143         info.
11144
11145         * mini.c (mono_init_exceptions): Initialize exception handling
11146         related trampolines at startup.
11147
11148 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
11149
11150         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
11151
11152 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
11153
11154         * mini.c: Handle type loading errors gracefully during compilation and
11155         throw the appropriate exception.
11156
11157 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
11158
11159         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
11160         for the mono binary.
11161
11162 2005-09-09  Martin Baulig  <martin@ximian.com>
11163
11164         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
11165         the release.
11166
11167 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
11168
11169         * mini-arm.h: use emulation for conv.r.un for the release.
11170
11171 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
11172
11173         * mini-arm.c, objects.cs: more fixes and tests for them.
11174
11175 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
11176
11177         * mini-arm.c: align structures to at least 4 bytes to be able
11178         to keep our current optimized memcpy.
11179
11180 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
11181
11182         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
11183
11184 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11185
11186         * mini.c: ignore SIGPIPE.
11187
11188 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
11189
11190         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
11191
11192         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
11193
11194 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
11195
11196         * mini.h: Add prototype for mono_allocate_stack_slots_full.
11197
11198 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
11199
11200         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
11201         exception handling support.
11202         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
11203         patch by Brian Koropoff <briank@marakicorp.com>).
11204
11205 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
11206
11207         * mini.c: revert another 'optimization' which breaks when
11208         items on the eval stack need to be saved at a basic block end
11209         (bug #75940).
11210
11211 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
11212
11213         * jit-icalls.c: for arrays, ensure we always provide
11214         lower bounds.
11215
11216 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
11217
11218         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
11219         
11220         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
11221
11222 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
11223
11224         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
11225         arguments in their original register.
11226
11227 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
11228
11229         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
11230         memset/memcpy.
11231
11232         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
11233         when ssapre is enabled.
11234
11235         * inssel-long.brg: Fix bug in previous patch.
11236
11237         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
11238         multiplication by a constant.
11239
11240 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
11241
11242         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
11243         icc.
11244
11245         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
11246         saving registers.
11247
11248 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
11249
11250         * inssel-arm.brg: apply changes tested by Brian Koropoff
11251         <briank@marakicorp.com>.
11252
11253 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
11254
11255         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
11256         
11257 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
11258
11259         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
11260         to the same register if dreg is just a base register.
11261         (print_ins): Improve printing of membase opcodes.
11262
11263         * inssel-x86.brg: Add optimized ldind(reg) rules.
11264
11265         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
11266
11267 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
11268
11269         * mini.c: when running under valgrind, set the stack bottom for
11270         the GC at the actual approximate stack for the app (fixes running
11271         mono with valgrind).
11272
11273 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
11274
11275         * mini.c: do no break at the first valuetype to init found
11276         (fixes bug #75791).
11277
11278 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
11279
11280         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
11281
11282 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
11283
11284         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
11285
11286 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
11287
11288         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
11289
11290 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11291
11292         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
11293
11294         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
11295         code.
11296
11297         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
11298         code.
11299
11300         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
11301         methods.
11302
11303 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
11304
11305         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
11306
11307 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11308
11309         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
11310         in the tail recursion optimization.
11311
11312         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
11313         debug info into the assembly file.
11314
11315         * iltests.il: Add test for filter regions.
11316
11317         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
11318         initial stack of filter regions. Fixes #75755.
11319
11320 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
11321
11322         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
11323         stack requirements.
11324
11325 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11326
11327         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
11328         the check for an already compiled method on non-ia64 platforms.
11329         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
11330         proper domain.
11331
11332         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
11333
11334         * inssel-x86.brg: Add some optimized call rules.
11335
11336 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
11337
11338         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
11339         method here.
11340
11341         * mini.h mini-trampolines.c: Pass the trampoline argument to 
11342         mono_arch_patch_delegate_trampoline.
11343
11344         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
11345
11346         * mini-trampolines.c: Fix build.
11347
11348         * mini-amd64.h: Add delegate trampolines.
11349
11350         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
11351
11352         * inssel-amd64.brg: Add optimized call rules.
11353         
11354         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
11355
11356         * inssel-ia64.brg: Add optimized ldind(reg) rules.
11357
11358 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
11359
11360         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
11361         change.
11362
11363         * mini-ia64.c: Remove LMF fixmes.
11364
11365         * mini-ia64.h: Remove most fields from LMF.
11366
11367         * inssel-ia64.brg (stmt): Fix unaligned access errors.
11368
11369         * mini-trampolines.c: Add support for IA64 function descriptors.
11370
11371         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
11372         for IA64 function descriptors.
11373
11374 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
11375
11376         * tramp-arm.c: patch the vtable for virtual calls. Added
11377         support code to register/unregister the LMF.
11378         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
11379         more LMF work.
11380
11381 2005-08-19  Dick Porter  <dick@ximian.com>
11382
11383         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
11384         bit value if needed.
11385
11386 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
11387
11388         * mini.c (mini_get_method): Move handling of wrapper data here.
11389
11390         * mini.c (mono_method_to_ir): Add support for dynamic methods.
11391
11392         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
11393         virtual.
11394
11395         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
11396         bblock->code does not remain empty.
11397
11398 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
11399
11400         * arrays.cs: Add regression test for #75832.
11401
11402         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
11403         rules. Fixes #75832.
11404
11405         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
11406         instruction scheduling.
11407
11408 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
11409
11410         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
11411
11412 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
11413
11414         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
11415
11416         * mini-codegen.c: Fix VC build.
11417
11418         * cpu-pentium.md: Increase length of atomic_exhange_i4.
11419
11420 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11421
11422         * mini.h: fix signature for mono_register_opcode_emulation.
11423
11424 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
11425
11426         * mini.c: Get rid of most of the helper_sig_... constants using
11427         mono_create_icall_signature ().
11428
11429 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
11430
11431         * jit-icalls.c (helper_ldstr): New helper function.
11432
11433         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
11434
11435         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
11436         throw, load the string using a helper call instead of creating a string object.
11437
11438         * aot.c: Update after LDSTR changes.
11439
11440         * mini.h: Bump AOT file version.
11441         
11442         * aot.c: Save class size info into the AOT file. Print more statistics during
11443         compilation.
11444
11445         * mini.h: Bump AOT file version.
11446
11447         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11448         ordering of disasm cases. Fixes #74957.
11449
11450 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
11451
11452         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
11453         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
11454         the generic code needed for the ARM port.
11455
11456 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
11457
11458         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
11459         inssel-arm.brg: more ARM features and fixes.
11460
11461 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
11462
11463         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
11464         ARM port work in progress.
11465
11466 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
11467
11468         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
11469
11470         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
11471
11472         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
11473
11474         * inssel.brg (mini_emit_memset): Add support for unaligned access.
11475
11476         * *-ia64.*: Ongoing IA64 work.
11477         
11478         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
11479
11480 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11481
11482         * TODO: Remove out-of-data todo stuff.
11483
11484         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
11485         dead code.
11486
11487         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
11488
11489         * mini.h: Bump corlib version.
11490
11491 2005-07-27  Martin Baulig  <martin@ximian.com>
11492
11493         * mini-codegen.c
11494         (create_copy_ins): Added `const unsigned char *ip' argument; set
11495         `copy->cil_code' from it.
11496
11497 2005-07-27  Martin Baulig  <martin@ximian.com>
11498
11499         * mini-exceptions.c (mono_handle_exception): Don't call
11500         mono_debugger_handle_exception() for filters.
11501
11502 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
11503
11504         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
11505         as well.
11506
11507 2005-07-26  Martin Baulig  <martin@ximian.com>
11508
11509         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
11510
11511         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
11512         helper_compile_generic_method() if the method is actually virtual
11513         and non-final.
11514
11515 2005-07-26  Martin Baulig  <martin@ximian.com>
11516
11517         * mini.c
11518         (trampoline_code): Renamed to `mono_trampoline_code' and made it
11519         public; this is now accessed directly by the debugger.
11520         (mono_generic_trampoline_code): Removed.
11521
11522         * debug-mini.c
11523         (mono_debug_init_method): Also add interncalls and wrappers.
11524
11525 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
11526
11527         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
11528
11529 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
11530
11531         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
11532
11533 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
11534
11535         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
11536
11537 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11538
11539         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
11540         getting TLS offsets on AMD64 too.
11541
11542 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
11543
11544         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
11545
11546 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
11547
11548         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
11549         inssel-arm.brg, mini-arm.h: ARM port work in progress.
11550
11551 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11552
11553         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
11554
11555         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
11556         to mini.c.
11557
11558         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
11559         mono_sparc_is_virtual_call ().
11560         
11561         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
11562
11563         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
11564         trampoline parameters.
11565
11566         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
11567         
11568         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
11569         to mono_arch_get_vcall_slot_addr.
11570
11571         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
11572         trampoline code.
11573
11574         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
11575
11576 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11577
11578         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
11579
11580 2005-07-19  Martin Baulig  <martin@ximian.com>
11581
11582         * exceptions-amd64.c (throw_exception): Call
11583         mono_debugger_throw_exception() here like we're doing it on i386.
11584
11585 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11586
11587         * mini-ia64.c: Add optimized TLS access support.
11588
11589 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
11590
11591         * mini-exceptions.c: Ongoing IA64 work.
11592
11593         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
11594
11595         * mini.c: Use the default optimization set when embedding. Fixes
11596         #75194.
11597
11598 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
11599
11600         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
11601         of trampolines to a separate file.
11602
11603         * mini-trampolines.c: New file.
11604
11605         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
11606         separate file.
11607         
11608         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
11609         amd64/ia64 code.
11610
11611         * mini-codegen.c: Fix cygwin build.
11612
11613 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
11614
11615         * mini.c: Add some minor changes needed by the IA64 port.
11616
11617         * *-ia64.*: Ongoing IA64 work.
11618
11619 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
11620
11621         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
11622         trampolines into arch-independent and arch-dependent parts.
11623
11624         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
11625
11626 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
11627
11628         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
11629
11630         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
11631         the xp-regalloc-branch for amd64.
11632
11633         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
11634         xp-regalloc-branch for x86.
11635
11636 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11637
11638         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
11639
11640 2005-07-06  Martin Baulig  <martin@ximian.com>
11641
11642         * mini.c
11643         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
11644         (mono_jit_runtime_invoke): Likewise.
11645
11646 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11647
11648         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
11649         on x86 too.
11650         
11651         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
11652         without loading their metadata. Reorganize the file format so exception handling+
11653         debug info is kept separate from normal method info. Create MonoJitInfo 
11654         structures for methods lazily.
11655
11656         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
11657         loading metadata.
11658         (x86_class_init_trampoline): Patch AOT class init trampolines too.
11659
11660         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
11661
11662         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
11663         in AOT code.
11664
11665         * mini.h: Bump AOT file version.
11666
11667 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
11668
11669         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11670
11671 2005-07-01  Raja R Harinath  <rharinath@novell.com>
11672
11673         * Makefile.am (check-local): Call semdel-wrapper.
11674
11675 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
11676
11677         * mini-x86.c: Revert the last change as it seems to break the build..
11678
11679 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11680
11681         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11682         
11683         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
11684
11685 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
11686
11687         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
11688         outside of the macro, so strange stuff doesn't happen with gcc4
11689         (NEW_AOTCONST_TOKEN): Likewise.
11690
11691 2005-06-28  Martin Baulig  <martin@ximian.com>
11692
11693         * mini.c (mini_class_is_system_array): New static method; use this
11694         instead of `klass->parent == mono_defaults.array_class' everywhere
11695         since this also works for the new generic array class.
11696
11697 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11698
11699         * inssel.brg: Remove warnings.
11700
11701 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
11702
11703         * mini-ia64.c: Ongoing IA64 work.
11704
11705         * basic-float.cs: Add float->i1 conversion test.
11706
11707         * iltests.il: Add conv.u4 test.
11708
11709 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
11710
11711         * inssel-long.brg: Fix bug caused by last change.
11712
11713 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
11714
11715         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
11716         BSDs.  Allows the x86 JIT to work on OSX86
11717
11718 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
11719
11720         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
11721         u4->i8 conversion.
11722
11723         * mini-ia64.c: Ongoing IA64 work.
11724
11725 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11726
11727         * mini-ia64.c: Ongoing IA64 work.
11728
11729         * driver.c: Clean up jit_code_hash as well when using --regression.
11730
11731         * inssel-long.brg: Fix long->i4/u4 conversion rules.
11732
11733         * basic-long.cs: Add tests for long->u4 conversion.
11734
11735 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
11736
11737         * mini.c: Take mono_get_domainvar out of macros. This makes sure
11738         that we do not depend on undefined C behavior: the order stuff
11739         gets evaluated within an expression. Fixes mono when compiled on
11740         GCC 4.
11741
11742 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
11743
11744         * *-ia64.*: Ongoing IA64 work.
11745
11746         * aot.c: Lower memory usage while loading AOT methods.
11747
11748         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
11749
11750         * mini.h: Bump AOT file format version.
11751
11752 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11753
11754         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
11755
11756 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
11757
11758         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
11759         not on callee assembly). Fixed some comments.
11760
11761 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
11762
11763         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
11764         it gets proper disassembly.
11765         (emit_method_info): Remove some dead code.
11766
11767         * mini.c (mini_method_compile): Allways allocate the GOT var in
11768         mono_method_to_ir for emulating opcodes.
11769
11770 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
11771
11772         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
11773         before freeing the code memory. Fixes #74990.
11774
11775         * objects.cs: Add regression test for #74992.
11776
11777         * liveness.c: Extend live ranges of arguments to the beginning of the
11778         method. Fixes #74992.
11779
11780         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
11781         so it points into the faulting instruction.
11782
11783 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
11784
11785         * jit-icalls.c (mono_imul_ovf): Add exception handling.
11786
11787         * *-ia64.*: Ongoing IA64 work.
11788
11789         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
11790
11791 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
11792
11793         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
11794
11795         * *-ia64.*: Ongoing IA64 work.
11796
11797 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
11798
11799         * basic-long.cs: Add tests for add/sub.ovf.
11800
11801         * basic.cs: Add tests for sub.ovf.
11802
11803         * *-ia64.*: Ongoing IA64 work.
11804
11805 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
11806
11807         * *-ia64.*: Ongoing IA64 work.
11808
11809         * basic.cs: Add conv.ovf.i4.un test.
11810
11811 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
11812
11813         * mini.c: (remove_block_if_useless) Fixed bug 75061.
11814         
11815 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11816
11817         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
11818
11819 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
11820
11821         * *-ia64.*: Ongoing IA64 work.
11822
11823 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11824
11825         * trace.[ch]:
11826         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
11827
11828 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
11829
11830         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
11831
11832 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
11833
11834         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
11835
11836         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
11837         of a call is callable by a near call.
11838
11839 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
11840
11841         * mini-ia64.c: Ongoing IA64 work.
11842
11843 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
11844
11845         * genmdesc.c: Make the generated array non-static.
11846
11847         * inssel-long.brg: Fix LSHR_IMM rule.
11848
11849         * *-ia64.*: Ongoing IA64 work.
11850
11851         * *-ia64.*: Ongoing IA64 work.
11852
11853 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11854
11855         * *-ia64.*: Ongoing IA64 work.
11856
11857         * *-ia64.*: Ongoing IA64 work.
11858         
11859         * mini-ia64.c: Ongoing IA64 work.
11860
11861         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
11862
11863 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11864
11865         * objects.cs basic-calls.cs: Move some tests to objects.cs.
11866         
11867         * objects.cs basic-long.cs: Move some tests to objects.cs.
11868
11869 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
11870
11871         * *-ia64.*: Ongoing IA64 work.
11872
11873         * iltests.il: Add a new test.
11874
11875         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
11876         newobj. Fixes #75042.
11877
11878 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
11879
11880         * *-ia64.*: Ongoing IA64 work.
11881         
11882         * *-ia64.*: Ongoing IA64 work.
11883         
11884         * *-ia64.*: Ongoing IA64 work.
11885
11886         * basic.cs objects.cs: Move tests accessing static variables as well.
11887
11888         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
11889
11890 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
11891
11892         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
11893
11894         * driver.c: Always print failed tests.
11895
11896         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
11897         frame pointer.
11898
11899         * *ia64*: Ongoing IA64 work.
11900
11901 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
11902
11903         * basic.cs: Add tests for add.ovf. Fix warnings.
11904
11905 2005-05-18  Miguel de Icaza  <miguel@novell.com>
11906
11907         * driver.c (mono_main): Avoid crash if no argument is passed to
11908         --break;  Do not use g_error, but f_printf.   And fix all other
11909         ocurrences of the same crash.
11910
11911 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
11912
11913         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
11914         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
11915         Fixes #74742.
11916
11917 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
11918
11919         * *-ia64.*: Add beginnings of IA64 backend.
11920
11921         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
11922
11923 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
11924
11925         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
11926         Fixes #74925.
11927
11928         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
11929
11930         * mini-amd64.c: Fix a warning.
11931
11932 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
11933
11934         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
11935         in float_neg. Fixes #74897.
11936
11937         * mini-amd64.c (emit_call): Fix another near call bug.
11938
11939 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
11940
11941         * declsec.c: Keep the appdomain information in the structure. Added a 
11942         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
11943         value gets overwritten).
11944         * declsec.h: Set the default MonoArray for the the stack to 6. Added
11945         an MonoAppDomain member to MonoSecurityFrame.
11946         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
11947         used in the stack walk. Now use a MonoArray which grow (double) when
11948         it gets full.
11949
11950 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
11951
11952         * mini.c: Re-enabled runtime cleanup, since running threads should
11953         now properly stop when exiting.
11954
11955 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
11956
11957         * mini-codegen.c: New file contaning the arch-independent local
11958         register allocator. Not used by any architectures yet.
11959
11960         * mini.h linear-scan.c: Merge some changes from the 
11961         mini-xp-local-regalloc branch.
11962
11963 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
11964
11965         * mini-amd64.c (emit_call): Fix calls to native functions when the
11966         runtime is compiled as a shared library. Fixes #74756.
11967
11968         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
11969         on a literal field. Fixes #74751.
11970
11971 2005-04-25  Raja R Harinath  <rharinath@novell.com>
11972
11973         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
11974
11975 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
11976
11977         * objects.cs: Add missing null casting test.
11978
11979 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
11980
11981         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
11982         in wrapper methods. Also rename 'address' variable to 'offset'.
11983
11984 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
11985
11986         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
11987         warnings.
11988         
11989         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
11990
11991         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
11992         work on windows.
11993
11994 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
11995
11996         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
11997
11998 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
11999
12000         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
12001         just the last bytes.
12002
12003 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
12004
12005         * aot.c (mono_compile_assembly): Fix warning.
12006
12007         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
12008         by the _MSC_VER stuff.
12009
12010 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
12011
12012         * inssel-long.brg: Fix #74588.
12013
12014         * cpu-amd64.md: Fix #74591.
12015
12016         * iltests.il: Add new regression tests.
12017
12018 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
12019
12020         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
12021         valuetype.
12022
12023 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
12024
12025         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
12026
12027         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
12028         from Bill Middleton <flashdict@gmail.com>.
12029
12030 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
12031
12032         * arrays.cs: Add new regression test. Fix warnings.
12033
12034 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
12035
12036         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
12037         and leakage in CKFINITE.
12038
12039         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
12040         this to a null op since it is called on amd64 too.
12041
12042         * exceptions-amd64.c (get_throw_trampoline): Align stack.
12043
12044         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
12045         body since this is not used on amd64.
12046         
12047         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
12048
12049         * mini-amd64.c: Remove obsolete fixmes.
12050
12051         * mini.c (print_method_from_ip): Fix debugging support.
12052
12053 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12054
12055         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
12056         so that expressions that don't give much gain are not reduced.
12057         * ssapre.h: Likewise.
12058
12059 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
12060
12061         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
12062
12063         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
12064
12065         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
12066
12067 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
12068
12069         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
12070
12071         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
12072
12073 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
12074
12075         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
12076         stack touching.
12077
12078         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
12079
12080         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
12081
12082         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
12083
12084         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
12085         MONO_ARCH_USE_SIGACTION. Fixes #74252.
12086
12087         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
12088
12089         * mini-x86.c: Fix up stack overflow handling.   
12090
12091         * exceptions.cs: Add new regression test.
12092
12093 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
12094
12095         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
12096         mono_jit_thread_attach.
12097
12098         * mini.c (mono_method_to_ir): Verify called method is not abstract.
12099
12100 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12101
12102         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
12103         avoid calling constructors using callvirt.
12104
12105         * inssel.brg: Fix #74073.
12106
12107 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
12108
12109         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
12110         compilation with non-GCC compilers.
12111         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
12112         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
12113
12114 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
12115
12116         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
12117         klass->interface_offsets (will likely fix bug#74073).
12118
12119 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12120
12121         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
12122
12123 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
12124
12125         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
12126         to amd64_div_reg_size ().
12127         
12128         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
12129
12130 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
12131
12132         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
12133
12134 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12135
12136         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
12137
12138 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12139
12140         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
12141         
12142         * mini.c (mono_precompile_assembly): Load and precompile referenced
12143         assemblies as well. Fixes #74015.
12144
12145 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12146
12147         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
12148
12149 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
12150
12151         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
12152         a lot of checks and (anyway) permissions cannot work until corlib is 
12153         loaded.
12154
12155 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
12156
12157         * mini-ppc.c: fixed ABI issue on sysv/ppc.
12158
12159 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
12160
12161         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
12162         calls (fixes bug#72824).
12163
12164 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12165
12166         * mini.c: fix tail recursion elimination (see test in bug#73936).
12167
12168 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
12169
12170         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
12171         some fp functions in sse2 mode.
12172
12173 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
12174
12175         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
12176
12177 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
12178
12179         * mini.h mini.c: Add mono_get_jit_tls_key ().
12180
12181         * mini-x86.c: Enable fast TLS support on windows.
12182
12183 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
12184
12185         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
12186         * mini.c: Check for p/invoke method when generating code. If a
12187         p/invoke method, or it's class, isn't decorated with [Suppress
12188         UnmanagedCodeSecurity] then generate code to call System.Security.
12189         UnmanagedDemand (only if the security manager is active).
12190
12191 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12192
12193         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
12194         last change as it seems to cause strange crashes.
12195         
12196 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12197
12198         * *.c: handle unsafe function pointers where needed.
12199
12200 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12201
12202         * mini.c (mono_jit_free_method): Remove the fixme too.
12203
12204 2005-03-15  Miguel de Icaza  <miguel@novell.com>
12205
12206         * mini.c: As discussed, make the code actually free the delegate
12207         thunk now, to enable the debugging of delegate problems, use
12208         MONO_DEBUG=1 when running Mono. 
12209
12210         This takes also care of parts of the leaks as seen by Joe.
12211
12212 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
12213
12214         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
12215         thread_tls_offset calculation.
12216
12217 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
12218
12219         * declsec.c: Reworked linkdemand checks for icall. The previous code
12220         was using the declaration code (untrusted) and didn't work as expected
12221         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
12222         specific case.
12223
12224 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
12225
12226         * iltests.il: Add new localloc test.
12227
12228         * mini-amd64.c: Handle large stack allocations the same way as on
12229         windows if stack overflow handling is working.
12230         
12231         * mini-amd64.c: Allocate the signal stack using mmap.
12232
12233         * mini.c (sigsegv_signal_handler): Fix reading of context.
12234
12235         * mini-exceptions.c: Fix up stack overflow handling.
12236
12237         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
12238
12239         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
12240
12241         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
12242
12243         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
12244
12245         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
12246         tramp_init functions as they are no longer needed.
12247
12248 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
12249
12250         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
12251         
12252         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
12253
12254         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
12255         
12256         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
12257         support that now.
12258
12259         * mini-ops.h: Add OP_LMUL_IMM.
12260
12261         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
12262         long mul/div opcodes as intrinsic.
12263
12264         * mini-amd64.c (emit_call): Handle the case when the callee might be
12265         an AOT method.
12266
12267 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
12268
12269         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
12270         extra safe.
12271         
12272         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
12273
12274         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
12275
12276 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
12277
12278         * mini.c (mono_codegen): Don't leak here, to help people running
12279         monogrind.
12280
12281 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
12282
12283         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
12284         conversions in sse2 mode.
12285
12286         * basic-float.cs: Add regression test.
12287         
12288         * mini-amd64.c: Reenable sse2.
12289
12290 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12291
12292         * mini-amd64.c: Disable sse2 until some regressions are fixed.
12293
12294 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
12295
12296         * driver.c: Copyright text should include 2005.
12297         
12298 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12299
12300         * cpu-amd64.md (load_membase): Fix more max lengths.
12301
12302 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
12303
12304         * cpu-amd64.md (load_membase): Fix max length.
12305
12306         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
12307
12308         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
12309
12310         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
12311         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
12312
12313         * basic-float.cs: Add rounding regression test.
12314
12315         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
12316
12317 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
12318
12319         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
12320         structures in registers for pinvoke wrappers.
12321
12322 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
12323
12324         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
12325
12326 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
12327
12328         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
12329         wrapper to mono_jit_thread_attach.
12330
12331         * mini.c (mini_jit_thread_attach): New jit icall.
12332
12333         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
12334         native->managed wrappers.
12335
12336         * exceptions.cs: Add new regression test.
12337
12338         * mini.c (optimize_branches): Check regions in the cbranch to throw
12339         block case as well. Fixes #73242.
12340
12341 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12342
12343         * mini.c: thread safety fixes.
12344
12345 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
12346
12347         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
12348         patching stuff, since delegates use jump trampolines so there is
12349         no caller.
12350
12351         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
12352         jump trampolines.
12353         
12354         * tramp-amd64.c: Fix build.
12355
12356         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
12357         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
12358
12359         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
12360         Rename this to mono_arch....
12361         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
12362
12363         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
12364
12365         * mini-amd64.c (emit_call): If both the caller and the callee is
12366         guaranteed to have 32 bit addresses, emit a normal call.
12367
12368         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
12369
12370         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
12371         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
12372         method_ptr inside delegates.
12373
12374 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
12375
12376         * mini.c (mono_jit_free_method): Free the method info even if the native code is
12377         invalidated. Fixes #73001.
12378
12379         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
12380
12381         * mini-x86.c: Only use stdcall for pinvokes on windows.
12382
12383 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
12384
12385         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
12386         * mini-x86.c: remove unreliable __thread var offset detection,
12387         use the correct accessors and enable by default.
12388
12389 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12390
12391         * mini.c (mono_jit_free_method): Fix memory leak.
12392
12393 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
12394
12395         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
12396
12397 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
12398
12399         * cpu-amd64.md: Fix lengths of atomic opcodes.
12400
12401 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
12402
12403         * driver.c: try to not imply using ICU is any good.
12404
12405 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
12406
12407         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
12408         functions as inline ops.
12409
12410         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
12411         some Interlocked functions as inline ops.
12412
12413         * mini.c (move_basic_block_to_end): Fix bug in last patch.
12414
12415         * mini.h (MonoBasicBlock): Reorganize fields a bit.
12416
12417         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
12418
12419         * mini.c: Add support for OP_NOT_TAKEN.
12420
12421         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
12422         structures in registers for pinvoke wrappers.
12423
12424         * mini-amd64.c: Fix warnings.
12425
12426 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
12427
12428         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
12429
12430         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
12431
12432         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
12433         address instead of loading the address from it.
12434
12435         * mini-x86.c: Add support for returning small structs in registers
12436         on Win32. Fixes part of #70864.
12437         
12438 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
12439
12440         * trace.c (get_token): Improve error checking.
12441
12442 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12443
12444         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
12445
12446 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
12447  
12448         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
12449         it can be reused for MonoClass.
12450         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
12451         _LINKDEMAND.
12452
12453 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
12454
12455         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
12456         instead of a MonoReflectionMethod. The method information wasn't used
12457         when displaying SecurityException details (but will be now).
12458
12459 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
12460
12461         * Makefile.am : windows build fix.
12462
12463 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12464
12465         * iltests.il: Add new regression test.
12466
12467         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
12468         #72522.
12469
12470 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
12471  
12472         * mini.c: Moved linkdemand check into helper function check_linkdemand
12473         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
12474         LDFTN, LDVIRTFTN).
12475
12476 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
12477
12478         * declsec.c: Added statistics counter for different kinds of 
12479         LinkDemands.
12480         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
12481         (and commented) declaration.
12482         * mini.c: Added statistics counter for security Demand code 
12483         generation. Added display of security statistics.
12484
12485 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
12486
12487         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
12488         Fix compilation errors under gcc-2.95.
12489
12490 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
12491
12492         * mini.c, driver.c: Use the new jit trampoline hashtable
12493
12494 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12495
12496         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
12497
12498 2005-02-11  Martin Baulig  <martin@ximian.com>
12499
12500         * debug-mini.c (mono_debug_close_method): Free the line number array.
12501
12502 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12503
12504         * aot.c: Break up large methods into smaller ones. Share GOT slots for
12505         icalls.
12506
12507         * mini.h: Bump AOT file format version. 
12508
12509 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
12510
12511         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
12512         APTC and P/Invoke.
12513         * declsec.h: Added macros to get/set lazyly initialized security 
12514         informations about assemblies. Added new enum for different type of
12515         possible LinkDemand violation. Added function to check LinkDemands.
12516         * mini.h: Added a field to MonoCompile to hold any security violation
12517         detected when JITting a method (so it can be thrown later).
12518         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
12519         and CEE_CALLVIRT. Added code to throw exception at the end of
12520         mini_method_compile (note: the exception is unhandled right now).
12521
12522 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
12523
12524         * mini.c, jit-icalls.c: use the managed implementation of
12525         memset for initobj and memset, to avoid managed <-> unmanaged
12526         transitions.
12527
12528 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12529
12530         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
12531         optimization if it would need a GOT var.
12532
12533         * basic.cs: Add tests for constant propagation and switch statements.
12534
12535         * ssa.c: Fix out-of-range constant propagation and switch statements.
12536
12537 2005-02-09    <vargaz@freemail.hu>
12538
12539         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
12540
12541 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
12542
12543         * cpu-amd64.md (load_membase): Fix max length of load_membase.
12544
12545 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12546
12547         * mini.c: update to new signature of mono_class_get_allocation_ftn().
12548
12549 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
12550
12551         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
12552         arithmetic operations.
12553
12554 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
12555
12556         * mini-ppc.c: add a workaround for broken user code that
12557         DllImports vararg functions with non-vararg signatures.
12558
12559 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12560
12561         * mini.c (mono_jit_compile_method_inner): Add detection and a 
12562         meaningfull error message for assemblies written in Managed C++.
12563
12564         * tramp-amd64.c mini-amd64.h: Add support for 
12565         create_trampoline_from_token ().
12566
12567         * aot.c mini-x86.c abcremoval.c: Applied patch from
12568         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
12569
12570 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
12571
12572         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
12573         which takes a MonoImage/token as parameter instead of a MonoMethod.
12574
12575         * aot.c: Use the new trampoline for initializing vtables.
12576
12577         * aot.c: Add support for ldfld/stfld_remote wrappers.
12578
12579         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
12580         rules for compare <MEM>, IMM.
12581
12582         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
12583
12584         * aot.c: Handle inherited finalizers correctly.
12585
12586 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
12587
12588         * inssel.brg (stmt): Add a missing _setup_... ().
12589
12590         * aot.c: Save some parts of the class state to the AOT file and use it
12591         to recompute that state when a class is initialized.
12592
12593         * mini.c: Install AOT hooks into the runtime.
12594
12595         * mini.h: Bump AOT file format version.
12596         
12597         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
12598         Fixes #72148.
12599
12600         * iltests.il: Add new test.
12601
12602 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12603
12604         * mini.c: fix typo.
12605
12606 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
12607
12608         * mini.c: setup the statistical profiler in the thread attach
12609         callback to cope with the new single thread code.
12610
12611 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
12612
12613         * mini-ppc.c: ensure we have enough room for the profiler
12614         calls (fixed bug#72084).
12615
12616 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
12617
12618         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
12619         it.
12620
12621 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12622
12623         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
12624
12625 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12626
12627         * ssapre.c: Fixed an issue with down safety (this allows IronPython
12628         to succesfully execute parrotbench).
12629         * ssapre.h: Likewise.
12630
12631 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12632
12633         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
12634         variable for stores to method arguments (fixes a SSAPRE issue).
12635
12636 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12637
12638         * mini.c: handle value types in dup, fixes gen-112.cs.
12639
12640 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
12641
12642         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
12643         sequence for calls in dynamic methods to avoid thunks.
12644
12645 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12646
12647         * mini.c: correctly remove dynamic methods from the hashtable.
12648
12649 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12650
12651         * driver.c: Disabled SSAPRE until fix the bug that appears
12652         in IronPython's parrotbench.
12653
12654 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
12655
12656         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
12657
12658         * mini.c (mono_method_to_ir): Revert the previous change.
12659         
12660         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
12661         when AOT compiling.
12662
12663         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
12664         mono_jit_info_table_find () etc. when running under valgrind.
12665
12666         * inssel.brg: Fix warnings.
12667
12668         * mini-exceptions.c: Fix warnings.
12669
12670 2005-01-31  Martin Baulig  <martin@ximian.com>
12671
12672         * driver.c (compile_all_methods_thread_main): Don't try to compile
12673         generic methods or anything which has type parameters.
12674
12675 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
12676
12677         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
12678
12679         * TestDriver.cs: Add --verbose flags.
12680
12681         * graph.c ssa.c: Fix 64 bit warnings.
12682         
12683         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
12684         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
12685         Fix 64 bit warnings.
12686
12687         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
12688         variable not spotted by gcc.
12689         
12690         * mini-amd64.c inssel-amd64.brg: Applied patch from  
12691         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
12692         X86_COMPARE_MEMBASE opcodes.
12693
12694         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
12695
12696 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
12697
12698         * *: MonoMethod->signature might be NULL now. You *MUST* use
12699         mono_method_signature.
12700
12701 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12702
12703         * driver.c (compile_all_methods_thread_main): Compile the methods
12704         without invoking cctors.
12705
12706 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12707
12708         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
12709         * basic-calls.cs: test for the above.
12710
12711 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12712
12713         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
12714         MonoJitInfo changes.
12715
12716 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
12717
12718         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
12719         eagerly if it contains dynamic methods.
12720         
12721         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
12722
12723         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
12724         trace, it is now computed by an icall from trace_ips.
12725         
12726         * mini-exceptions.c: Fix a warning.
12727
12728 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
12729
12730         * mini-exceptions.c: don't bother getting stack trace info if
12731         it's not going to be used.
12732
12733 2005-01-27  Raja R Harinath  <rharinath@novell.com>
12734
12735         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
12736         ssapre-mini-ops.h.
12737
12738 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
12739
12740         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
12741
12742         * aot.c: Avoid calling mono_method_get_header () if not needed.
12743
12744         * mini.h: Bump AOT file format version.
12745         
12746         * mini.c (mono_emit_native_call): Allocate a GOT var here.
12747
12748         * mini.c (mono_print_tree): Print more info for calls.
12749
12750 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
12751
12752         * declsec.h: Remove warning by adding missing include for marshal.h
12753
12754 2005-01-26  Martin Baulig  <martin@ximian.com>
12755
12756         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
12757         `ip' twice.
12758
12759 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
12760
12761         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
12762         flags.
12763
12764         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
12765
12766         * aot.c (mono_compile_assembly): Fix a warning.
12767
12768 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
12769
12770         * declsec.c: Look for security attributes on the original MonoMethod 
12771         (and not the wrapped one). This fix permissions on icalls.
12772
12773 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12774
12775         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12776
12777         * mini.c (mono_allocate_stack_slots): Add a fixme.
12778
12779         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12780
12781 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12782
12783         * inssel.brg: optimize casts of sealed types (more
12784         optimizations waiting for fixes in remoting).
12785
12786 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12787
12788         * inssel.brg (stmt): Add another dummy rule.
12789
12790         * driver.c: Fix warnings.
12791
12792         * driver.c (mono_main): If running under valgrind, instruct glib to use
12793         the system allocation functions so valgrind can track the memory
12794         allocated by the g_... functions.
12795
12796         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
12797
12798         * mini-ops.h: Add OP_DUMMY_STORE opcode.
12799
12800         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
12801
12802         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
12803         variables in try regions.
12804
12805         * mini.c (mini_method_compile): Don't disable optimizations on large
12806         methods when AOT compiling.
12807
12808         * mini.c (mono_allocate_stack_slots): New arch independent method to 
12809         allocate stack slots. Not yet used.
12810
12811 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
12812
12813         * debug-mini.c (mono_debug_close_method): Plug some leaks.
12814
12815 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
12816
12817         * mini-ppc.c: make the branch info relative as the code
12818         buffer can be reallocated.
12819
12820 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
12821
12822         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
12823         * driver.c: Removed the AOT/security restriction. Now initialize the
12824         security manager (in metadata) if --security is used.
12825         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
12826         rather than the pointer to declarative security, when AOT is used.
12827
12828 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
12829
12830         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
12831         basic blocks, reduced intrinsic exception throwing code size.
12832
12833 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
12834
12835         * driver.c (mini_usage): Reorder the usage screen.
12836
12837 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
12838
12839         * mini.c (mono_resolve_patch_target): Fix warning.
12840
12841 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
12842
12843         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
12844         previous patch.
12845
12846         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12847
12848         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
12849         breaks the amd64 build.
12850
12851         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
12852         register allocation. Fixes #71454.
12853
12854         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12855
12856         * arrays.cs: Add new regression test.   
12857
12858 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12859
12860         * ssapre.c: Turned usage of snprintf to GString.
12861         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
12862         (I left it on by mistake in my previous commit).
12863
12864 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
12865
12866         * mini.c, cfold.c, basic-calls.cs: preserve side effects
12867         on cond branch optimization (fixes bug# 71515).
12868
12869 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12870
12871         * abcremoval.c: Fixed bug 71062.
12872         * abcremoval.h: Likewise.
12873
12874 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12875
12876         * mini.c: Added a new functionality to optimize_branches, the removal
12877         of useless basic blocks, and fixed some problem in the removal of
12878         critical edges; some utility functions added for both purposes.
12879         * ssapre.c: Added complex expression support, and fixed bug 70637.
12880         * ssapre.h: Likewise.
12881         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
12882         enabled in SSAPRE.
12883         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
12884         * driver.c: Re-enabled SSAPRE.
12885
12886 2005-01-19  Martin Baulig  <martin@ximian.com>
12887
12888         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
12889         the result of mono_get_method_constrained().
12890
12891 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
12892
12893         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
12894         manager.
12895
12896 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
12897
12898         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
12899         be detected.  Fixes #59296.
12900
12901 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12902
12903         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
12904         which can happen. Fixes #71361.
12905
12906 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12907
12908         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
12909         manager.
12910
12911 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12912
12913         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
12914         appdomain-unload.exe to fail.
12915         
12916         * mini.c: Fix some memory leaks.
12917
12918 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
12919
12920         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
12921         Fixed bug and sped up some codepaths.
12922
12923 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12924
12925         * mini.c: Fix some memory leaks.
12926
12927         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
12928         conversion.
12929
12930         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
12931
12932         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
12933         #71320.
12934
12935         * iltests.il: Add regression test for #71320.
12936
12937 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
12938
12939         * mini.c (mono_codegen): Fix installation of profiler hooks.
12940
12941         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
12942
12943 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12944
12945         * mini.h, mini.c, cfold.c: optimize access to enum
12946         readonly fields, too. Eval conditional branches if possible
12947         to perform unreachable code removal in more cases.
12948
12949 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
12950
12951         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
12952
12953         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
12954         code manager.
12955
12956         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
12957         WinXP DEP. Fixes #71244.
12958
12959 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
12960
12961         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
12962
12963 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
12964
12965         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
12966
12967 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
12968
12969         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
12970         changes.
12971
12972         * mini.h: Bump AOT version.
12973
12974         * mini.h (MonoCompile): Change exvar to a hash table.
12975
12976         * mini.c: Allocate a separate exvar for each handler block.
12977
12978         * mini.c: Get rid of the computation of filter_lengths, its not needed.
12979
12980         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
12981         ex var with the pending exception and only throw if the two are equal.
12982         Fixes #68552.
12983         
12984         * exceptions.cs: Add tests for rethrow and nested catch clauses.
12985
12986         * mini-x86.c: Fix warnings.
12987
12988         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
12989         used by all the ports now.
12990
12991         * aot.c: Add write-symbols and save-temps options.
12992
12993 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
12994
12995         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
12996
12997 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
12998
12999         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
13000         operations.
13001
13002         * tramp-s390.c: Check vtable slot belongs to the domain.
13003
13004         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
13005         as per other platforms.
13006
13007         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
13008
13009 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
13010
13011         * driver.c: we don't run the Main() code in a subthread anymore.
13012
13013 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
13014
13015         * mini.c: added experimental rtc support in the statistical
13016         profiler: if the user has the permission, more accurate statistics
13017         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
13018         The MONO_RTC value must be restricted to what the linux rtc allows:
13019         power of two from 64 to 8192 Hz.
13020
13021 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
13022
13023         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
13024
13025 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
13026
13027         * mini-ppc.c: better icache flush for smp.
13028
13029 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
13030
13031         * mini-amd64.c (emit_move_return_value): Fix memory leak.
13032
13033         * mini-x86.c (get_call_info): Add the get_call_info () code from the
13034         amd64 port, not yet used.
13035
13036 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13037
13038         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
13039         a struct type.
13040
13041 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
13042
13043         * driver.c: Added --security option to activate the security manager.
13044         Right now this will allow code generation for declarative demands and
13045         is disabled when AOT is specified.
13046         * mini.c: Add code generation for declarative security demands.
13047         * mini.h: Add mono_use_security_manager as an extern gboolean.
13048
13049 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13050
13051         * aot.c (mono_compile_assembly): Speed up compilation a bit by
13052         emitting more dense assembly code.
13053
13054         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
13055         exception throwing stuff.
13056
13057 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
13058
13059         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
13060         dead code.
13061
13062         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
13063         left in by mistake.
13064
13065         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
13066         fixed.
13067
13068         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
13069
13070         * tramp-*.c: Only patch vtable slots if the object is in the current
13071         domain. Fixes appdomain-unload.exe.
13072
13073         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
13074         
13075         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
13076         x86 branch.
13077
13078 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13079
13080         * mini.c (reverse_branch_op): New helper function.
13081
13082         * mini.c (optimize_branches): Run the new optimization only on 
13083         platforms which support it. Also reverse all kinds of branches.
13084
13085         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
13086
13087         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
13088         a throw statement.
13089
13090         * mini.c (optimize_branches): Reverse not-equals branches if the false
13091         bblock is a throw. This happens a lot of time with argument checking in
13092         corlib.
13093
13094         * mini.c (mono_codegen): Add support for placing basic blocks after
13095         the function epilogue.
13096
13097         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
13098         function epilogue.
13099         
13100 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
13101
13102         * mini.c (setup_stat_profiler): Only set this up if the platform
13103         supports ITIMER_PROF.
13104
13105 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13106
13107         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
13108         previous patch.
13109
13110         * inssel.brg: Fix a warning.
13111
13112 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
13113
13114         * mini.c: added support for statistical profiler 
13115         (run with: --profile=default:stat).
13116
13117 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
13118
13119         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
13120
13121         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
13122
13123         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
13124         related to global registers from the amd64 port.
13125
13126 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
13127
13128         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
13129
13130         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
13131         with global registers.
13132         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
13133
13134         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
13135
13136 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
13137
13138         * debug-mini.c (encode_value): Fix off-by-one.
13139
13140         * aot.c (encode_value): Likewise.
13141
13142         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
13143
13144 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
13145
13146         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
13147         AOT.
13148
13149         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
13150         
13151         * aot.c (emit_method_info): Increase size of temp buffer.
13152
13153         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
13154         the AOT case.
13155
13156 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
13157
13158         * aot.c (emit_method_info): Fix build.
13159         
13160         * aot.c: Further rework of the AOT file format to reduce the size of
13161         the method info data.
13162
13163         * mini.h: Bump AOT file format version.
13164
13165 2004-12-27  Martin Baulig  <martin@ximian.com>
13166
13167         * mini.c (mini_get_method): New static method; call
13168         mono_get_method_full() and mono_get_inflated_method().
13169         (mono_method_to_ir): Use mini_get_method() instead of
13170         mono_get_method_full(). 
13171
13172 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
13173
13174         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
13175
13176 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
13177
13178         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
13179
13180         * inssel-amd64.brg: Add some optimization rules.
13181
13182 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
13183
13184         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
13185         standard not GC'd stuff is fine.
13186
13187 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
13188
13189         * aot.c: Rework the AOT file format to get rid of most of the global
13190         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
13191
13192         * mini.h: Bump AOT file format version.
13193         
13194 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
13195
13196         * mini.h: Bump AOT file format version.
13197
13198         * aot.c (mono_aot_is_got_entry): New function to determine if an 
13199         address is inside a GOT.
13200
13201         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
13202
13203         * cpu-pentium.md: Increase the maximum size of some instructions which
13204         might involve a got access.
13205         
13206         * mini.c (get_method_from_ip): Another debug helper function.
13207
13208         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
13209         when got var accesses are created during the decompose phase.
13210
13211         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
13212
13213         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
13214         argument mini_compile_method and to MonoCompile, and use this to
13215         determine whenever a given method is compiled for AOT. This allows the
13216         other methods compiled during AOT compilation to be free of AOT stuff,
13217         so the backends does not need to add special support for them by
13218         creating a fake GOT etc.
13219
13220         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
13221         longer needed.
13222
13223 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
13224
13225         * mini.c (mono_method_to_ir): It turns out that some of the
13226         x-appdomain wrappers are lax with types, so just ignore this for
13227         all wrappers.
13228
13229         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
13230         at the vtable->klass. If it is non-shared code we can just use the
13231         vtable.
13232
13233 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
13234
13235         * mini-ppc.c: access MonoDomain from tls, too.
13236
13237 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
13238
13239         * declsec.c: Removed unused variable (and related warning ;-)
13240
13241 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
13242
13243         * iltests.il: New test for LDELEMA on an array of ref types.
13244
13245         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
13246         all ldelema's on reftypes.
13247         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
13248         it was the wrong place to put it.
13249
13250         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
13251         register to pop to make this cleaner, at the request of Paolo.
13252
13253 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13254
13255         * mini-ops.h (OP_GETHASHCODE): New op.
13256
13257         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
13258
13259         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
13260         operation.
13261
13262         For a microbenchmark, this reduces the cost of Hashtable.get_Item
13263         by 25%.
13264         
13265         * mini-x86.c (mono_arch_output_basic_block): Rather than
13266
13267         add ebp, 4
13268
13269         Emit
13270
13271         pop edx
13272
13273         The first is 3 bytes while the second is 1. This saves 36 kb on
13274         mscorlib, quite a big saving. When bootstraping mcs, I was able to
13275         see a small boost because of icache locality.
13276
13277         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
13278
13279 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
13280
13281         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
13282         started code sharing with the generic code.
13283
13284 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
13285
13286         * mini-ppc.c, cpu-g4.md: added code for direct access to
13287         tls data slots.
13288
13289 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
13290
13291         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
13292          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
13293         to OP_TLS_GET.
13294
13295 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
13296
13297         * declsec.c|h: Added functions to cache the declarative stack modifiers
13298         in MonoJitInfo and to create a security frame from a MonoJitInfo 
13299         structure.
13300         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
13301         created. Register internal calls for System.Security.SecurityFrame::
13302         _GetSecurityFrame and _GetSecurityStack.
13303         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
13304         the definitions for the new stack walk/callback mechanism.
13305         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
13306         first security frame for LinkDemands and InheritanceDemands) and
13307         GetSecurityStack for Demands. Both use the new mono_walk_stack code
13308         from lupus.
13309         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
13310         walk initialization (lupus).
13311
13312 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13313
13314         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
13315         idiom.
13316         (handle_loaded_temps): Do not create a temporary variable for
13317         things that we know are temps. They will never be modified.
13318         (mono_spill_call): Set MONO_INST_IS_TEMP
13319         (mono_emulate_opcode): ditto
13320         (emit_tree): ditto
13321         (mono_method_to_ir.CEE_DUP): ditto
13322
13323 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
13324
13325         * mini.c (type_to_eval_stack_type): Make this handle the void type
13326         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
13327         (emit_tree): use ip_in_bb to special case some common idioms
13328         Update all callers to pass in the IP.
13329         (mono_method_to_ir): Make CEE_CALL* do the above as well.
13330
13331         This gives us a nice 2% speedup in mcs bootstrap.
13332
13333         * mini-x86.c (peephole_pass): Peephole pass to make
13334         mov  [foo], eax
13335         push [foo]
13336
13337         into
13338
13339         mov [foo], eax
13340         push eax
13341
13342         * mini.c (ip_in_bb): new method.
13343         (mono_method_to_ir): use this method rather than doing the hash
13344         lookup ourselves.
13345
13346         * linear-scan.c (mono_linear_scan): When expiring actives, you
13347         don't need to keep around variables that expire on this
13348         instruction. This makes it so that:
13349              a = b + 1
13350         will turn into:
13351              store (ebx add (ebx, 1))
13352         which will become
13353              add ebx, 1
13354
13355 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
13356
13357         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
13358         combination to avoid doing two copies. Fix up problems with previous
13359         patch.
13360
13361         * mini.c: Fix 64 bit warnings.
13362
13363         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
13364
13365 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
13366
13367         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
13368         changes from the x86 code.
13369
13370         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
13371
13372 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
13373
13374         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
13375         throwing code to reduce its size, unify the AOT and non-aot code and 
13376         get rid of relocations in the AOT case.
13377
13378         * mini-x86.h mini.c exceptions-x86.c 
13379         (mono_arch_get_throw_corlib_exception): New arch specific function to 
13380         raise corlib exceptions which doesn't require relocations in the 
13381         caller.
13382
13383         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
13384
13385 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
13386
13387         * mini.c (mono_emit_method_call): Only allocate the got var when it is
13388         needed.
13389
13390         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
13391         in the AOT case.
13392
13393 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13394
13395         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
13396         with add function when used from Inc/dec atomic 
13397         functions. Re-enabled optimization on x86.
13398         * mini-ops.h: renamed atomic_add functions to
13399         allow _add to match the Interlocked::Add and
13400         _add_next to match Interlocked::Inc/Dec.
13401
13402 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
13403
13404         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
13405         linking of BBs to the end BB, and enabled SSAPRE also with
13406         consprop and copyprop (which was prevented by that bug).
13407
13408 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13409
13410         * mini-x86.c: disabling the Interlocked optimizing code. 
13411
13412 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13413
13414         * aot.c (load_aot_module): Move reading of got_addr after the AOT
13415         file version check.
13416         
13417 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13418
13419         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
13420         interlocked optimization due lack of support on x86, rewrote 
13421         exchange to take into account that base may be in eax.
13422         
13423         xsp works again; activated Interlocked optimizing code.
13424         
13425 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13426
13427         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13428
13429 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
13430
13431         * mini-ops.h: Add new opcodes.
13432
13433         * mini.h: Add new patch types. Add got_var to MonoCompile.
13434
13435         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
13436         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
13437         make it work with all kinds of patchable code.
13438
13439         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
13440         address of the GOT, and referencing entries in the GOT.
13441
13442         * mini.c: Add code to load the GOT address if needed by an opcode.
13443
13444         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
13445         independent AOT code on the x86 using an elf-style Global Offset Table.
13446
13447 2004-12-14  Raja R Harinath  <rharinath@novell.com>
13448
13449         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
13450
13451 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13452
13453         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
13454         when running xsp.
13455
13456 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
13457
13458         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
13459         of Interlocked:Increment/Decrement/Add as inline ops.
13460         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
13461
13462 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
13463
13464         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
13465         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
13466
13467 2004-12-12  Duncan Mak  <duncan@ximian.com>
13468
13469         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
13470         again. `patch_info->table_size' is no longer valid after Zoltan's
13471         commit #37636.
13472
13473 2004-12-12  Martin Baulig  <martin@ximian.com>
13474
13475         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
13476         if we are the "real" method, ie. not an inlined method inside it.
13477
13478 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
13479
13480         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
13481         before we look in the special fields table. This fixes
13482         ../tests/thread-static-init.cs.
13483
13484 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13485
13486         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
13487         for Array get_Rank and get_Length. Fixes bug #70465.
13488
13489 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
13490
13491         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
13492         separate structure to reduce the size of MonoJumpInfo.
13493
13494 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
13495
13496         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
13497
13498 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
13499
13500         * mini.c (mini_get_inst_for_method): Changed to allow ports
13501         to return a MonoInst instead of opcode 
13502         (renamed mini_get_opcode_for_method to better reflect the new functionality)
13503         
13504         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
13505         Allow ports to return a created MonoInst instead of op-code, will enable
13506         new optimizations.
13507         (renamed mini_get_opcode_for_method to better reflected the functionality)
13508
13509 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
13510
13511         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
13512
13513 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13514
13515         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
13516         Fixes #69985.
13517
13518 2004-12-08  Martin Baulig  <martin@ximian.com>
13519
13520         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
13521         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
13522
13523 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13524
13525         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
13526         correctly.
13527
13528         * exceptions.cs: Disable some tests which depend on properties of x86 fp
13529         arithmetic.
13530
13531 2004-12-08  Raja R Harinath  <rharinath@novell.com>
13532
13533         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
13534
13535 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
13536
13537         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
13538         bug introduced by the previous patch.
13539
13540 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13541
13542         * mini-ppc.c, objectc.cs: handle large structs passed by value
13543         (fixes bug #69972).
13544
13545 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
13546
13547         * mini-ppc.c: OP_ARGLIST implementation from
13548         Geoff Norton  <gnorton@customerdna.com>.
13549
13550 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
13551
13552         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
13553         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
13554
13555 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13556
13557         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
13558
13559 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13560
13561         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
13562         support.
13563
13564 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
13565
13566         * mini-sparc.c: Zero out localled-ed memory.
13567
13568         * iltests.il: Add tests for zeroing out localloc-ed memory.
13569
13570 2004-12-04  Martin Baulig  <martin@ximian.com>
13571
13572         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
13573         mono_method_get_signature_full().       
13574
13575 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
13576
13577         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
13578         and some utility functions (always for SSAPRE), integrated SSAPRE.
13579         * mini.h: Likewise.
13580         * driver.c: Added ssapre option.
13581         * ssa.c: Small fix on OP_ARG handling.
13582         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
13583         * Makefile.am: Likewise.
13584
13585 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
13586
13587         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
13588         now in the xp code.
13589
13590         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
13591         icall.
13592
13593 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13594
13595         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
13596         
13597         * cpu-s390.md : Increase instruction length of oparglist.
13598
13599         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
13600
13601 2004-11-30  Martin Baulig  <martin@ximian.com>
13602
13603         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
13604         virtual generic methods.  We call a special helper_compile_generic_method()
13605         icall to retrieve the method from the vtable, inflate and compile
13606         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
13607
13608         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
13609
13610 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
13611
13612         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
13613
13614 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
13615
13616         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
13617         Fixes #69929.
13618
13619 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
13620
13621         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
13622         platforms with PIC aot.
13623
13624 2004-11-28  Martin Baulig  <martin@ximian.com>
13625
13626         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
13627         Fixes gen-112.cs.
13628
13629 2004-11-28  Martin Baulig  <martin@ximian.com>
13630
13631         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
13632         the result of mono_type_get_underlying_type() to check whether
13633         we're byref.
13634
13635 2004-11-26  Martin Baulig  <martin@ximian.com>
13636
13637         * mini.c
13638         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
13639         in the g_assert().
13640
13641 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
13642
13643         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
13644         the same way as the other arguments so they won't get clobbered.
13645
13646         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
13647         calls through R11 since it is clobbered by the trampoline code.
13648
13649 2004-11-26  Raja R Harinath  <rharinath@novell.com>
13650
13651         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
13652         pick up in-tree mscorlib.dll.
13653
13654 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
13655
13656         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
13657
13658         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
13659         runtime data/code are now stored in a table similar to the GOT in ELF. 
13660         This allows the code itself to be position independent.
13661
13662         * aot.c: Fix loading of referenced assemblies after the lazy assembly
13663         loading changes.
13664
13665         * aot.c: Attach ELF type (object/function) directives to all global
13666         symbols.
13667
13668         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
13669
13670         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
13671
13672         * mini-amd64.h: Turn on PIC AOT code.
13673
13674         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
13675         returning the offset within an OP_AOTCONST instruction where the GOT
13676         offset needs to be added.
13677
13678         * mini.h: Bump AOT file format version.
13679
13680 2004-11-25  Martin Baulig  <martin@ximian.com>
13681
13682         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
13683         uninflated generic methods.
13684
13685 2004-11-25  Martin Baulig  <martin@ximian.com>
13686
13687         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
13688
13689 2004-11-24  Martin Baulig  <martin@ximian.com>
13690
13691         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
13692         original klass (this only applies for generic instances).
13693
13694 2004-11-24  Martin Baulig  <martin@ximian.com>
13695
13696         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
13697         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
13698         that array).
13699
13700 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
13701
13702         * mini.c (mono_method_to_ir): Disable inlining for methods containing
13703         localloc. Fixes #69678.
13704
13705         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
13706         
13707 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
13708
13709         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
13710         used SSE registers on pinvoke calls. Fixes #69774.
13711
13712 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
13713
13714         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
13715         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
13716
13717 2004-11-23  Raja R Harinath  <rharinath@novell.com>
13718
13719         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
13720         Refer directly to the mcs/ tree.
13721
13722 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13723
13724         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
13725         Check if a trampoline for a synchronized method is required. 
13726
13727 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
13728
13729         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
13730         with localloc if needed. Throe arithmetric exception in
13731         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
13732         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
13733
13734 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
13735
13736         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
13737         types before switching on type.  Fixes #69622.
13738
13739 2004-11-19  Raja R Harinath  <rharinath@novell.com>
13740
13741         * Makefile.am (check-local): New.  Integrate into 'make check'.
13742         (MCS,RUNTIME): Define using in-tree mono and mcs.
13743         (ILASM): New.
13744         (%.exe): Use $(ILASM).
13745
13746 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
13747
13748         * mini-ppc.c: adjust initial prolog size (bug #69691).
13749
13750 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
13751
13752         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
13753         #69664.
13754
13755 2004-11-17  Raja R Harinath  <rharinath@novell.com>
13756
13757         * Makefile.am (clean-local): Rename from 'clean'.
13758
13759 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13760
13761         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
13762         to mono_arch_is_int_overflow. 
13763         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
13764         SIGFPE events.
13765
13766 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
13767
13768         * declsec.c|h: New files to support declarative security attributes.
13769         Added function to check if a method has (applicable) security.
13770         * mini.c|h: Add check for declarative security attributes in
13771         mono_method_check_inlining.
13772         * Makefile.am: Added declsec.c and declsec.h to the build.
13773
13774 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
13775
13776         * mini.c, mini.h: update to keep dynamic code info per-domain.
13777
13778 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
13779
13780         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
13781         (mini_init): Get rid of it from here too.
13782
13783 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
13784
13785         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
13786         implemented OP_RETHROW (patch by Geoff Norton
13787         <gnorton@customerdna.com>).
13788
13789 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
13790
13791         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
13792         between appdomains.  Fixes appdomain-unload on PPC.
13793
13794 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
13795
13796         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13797         mini-exceptions.c: handle the new wrapper types.
13798         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
13799         token value as a MonoClass* when compiling a wrapper.
13800         mono_jit_create_remoting_trampoline now takes an additional
13801         MonoRemotingTarget parameter.
13802         
13803 2004-11-10  Martin Baulig  <martin@localhost>
13804
13805         * mini.c (mono_method_to_ir): Use `generic_container->context'
13806         rather than creating a new one.
13807
13808 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13809
13810         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
13811
13812         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
13813
13814 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
13815
13816         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
13817         the experimental aot cache stuff.
13818
13819 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
13820
13821         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13822         mini-exceptions.c: update to exception clause structure changes.
13823
13824 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13825
13826         * exceptions-x86.c (throw_exception): Fix warnings.
13827
13828         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
13829         for OP_RETHROW.
13830
13831 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13832
13833         * exceptions-sparc.c (get_throw_exception): Really fix this.
13834
13835 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
13836
13837         * tramp-*.c: we no longer support icalls without wrappers, so
13838         a bit of code can be removed here
13839
13840 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
13841
13842         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
13843         patch.
13844
13845         * cpu-sparc.md: Add op_rethrow.
13846
13847         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
13848
13849         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
13850
13851         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
13852         * mini-ops.h: Add OP_RETHROW.
13853
13854         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
13855
13856         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
13857
13858 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
13859         
13860         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
13861         Makes the output much easier to read
13862
13863 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
13864
13865         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
13866         prevents another huge leak when compiling with ssa. Secondly, the
13867         performance of doing this rather than freeing the lists is much
13868         better. GList does a lock every time you allocate a list link,
13869         so that it can use a memory pool. So, it is better to just use
13870         a memory pool of our own.
13871         
13872         * ssa.c, linear-scan.c: replace g_list_remove_link with
13873         g_list_delete.  The remove one does not free the GList, so we were
13874         leaking memory. On -O=all --compile-all with corlib, this cut down
13875         3 MB of allocations.
13876
13877 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
13878
13879         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
13880
13881         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
13882
13883         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
13884         into a new function mono_create_jit_trampoline ().
13885
13886 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
13887
13888         * trace.c (get_spec): Allow tracing of classes without a namespace.
13889
13890 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
13891
13892         * mini.c: Fix pointer overwrite in mini_method_compile.
13893
13894 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
13895
13896         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
13897         The darwin ABI needs some special handling for 1 and 2 byte structs
13898         Lets use lbz/lhz instead of lwz everywhere.
13899         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
13900         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
13901         Use stb/sth for the former, and put the latter always on stack instead of in
13902         argument registers.
13903
13904 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
13905
13906         * trace.c (is_filenamechar): Add '_'.
13907
13908 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
13909
13910         * mini-s390.c: Fix prolog length to allow for large trace requirements.
13911
13912         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
13913
13914 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
13915
13916         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
13917         depends on libmonogc. Fixes #68805.
13918
13919 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
13920
13921         * mini.c (mono_jit_free_method): Provide extra information for
13922         this error.  Currently this leaks, but will be turned into a
13923         developer option in the future.
13924
13925 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
13926
13927         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
13928
13929 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
13930
13931         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
13932         boundary. Fixes reading of PATCH_INFO_R4 and R8.
13933         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
13934
13935 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
13936
13937         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
13938         trampolines for AOT code.
13939
13940 2004-10-22    <vargaz@freemail.hu>
13941
13942         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
13943         constructed types. Fixes #68136.
13944
13945 2004-10-21  Martin Baulig  <martin@ximian.com>
13946
13947         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
13948         if it returns true, unwind the stack to the call instruction.
13949
13950 2004-10-21    <vargaz@freemail.hu>
13951
13952         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
13953
13954         * mini.h: Bump AOT version number.
13955
13956         * objects.cs: Add another test for unbox trampolines.
13957
13958         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
13959         valuetype methods.
13960
13961 2004-10-20    <vargaz@freemail.hu>
13962
13963         * driver.c: Add SHARED to the set of optimizations tested.
13964
13965         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
13966
13967         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
13968         used by CEE_NEWARR.
13969
13970         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
13971
13972 2004-10-20  Martin Baulig  <martin@ximian.com>
13973
13974         * mini-exceptions.c (mono_handle_exception): Call
13975         mono_debugger_handle_exception() to tell the debugger about
13976         catch/finally clauses.
13977
13978 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
13979
13980         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
13981
13982         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
13983         #68447.
13984
13985 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
13986
13987         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
13988         methods as their native size, fixed bug #57543, #57545.
13989         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
13990         This saves a temporary register and mullw call down into 1 (minor perf
13991         increase for cases like sum = sum * 5;  This use to translate into:
13992             li r11,5
13993             mullw r28,r28,r11
13994         It now translates to
13995             mulli r28,r28,5
13996
13997 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
13998
13999         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
14000         #68388.
14001
14002 2004-10-11  Martin Baulig  <martin@ximian.com>
14003
14004         * mini.c (mono_method_to_ir): If we're a generic method, get the
14005         MonoGenericContainer from our MonoMethodNormal and create a
14006         MonoGenericContext from it.
14007
14008 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
14009
14010         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
14011
14012         * basic-long.cs: Add test for checked i8->i2 cast.
14013
14014 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14015
14016         * inssel-ppc.brg: added a couple of speedup rules.
14017
14018 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
14019
14020         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
14021         to speed up rebuilds.
14022
14023 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14024
14025         * mini-s390.c: Minor fix to OP_OR_IMM.
14026
14027 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
14028
14029         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
14030         better. Fixes appdomain-unload.exe on sparc.
14031
14032 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
14033
14034         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
14035         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
14036         see bug 67324.
14037
14038 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
14039
14040         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
14041
14042 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
14043
14044         * mini.c: Always generate a field read/write wrapper for members
14045         of the class MarshalByRefObject since the actual instance could
14046         be a CBO.
14047
14048 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
14049
14050         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
14051
14052 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
14053
14054         * driver.c mini.h trace.c: Move the setting of the main assembly into
14055         a separate function called mono_trace_set_assembly () and call it after
14056         actually loading the main assembly. Fixes #66872.
14057
14058 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
14059
14060         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
14061         using the code manager.
14062
14063 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
14064
14065         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
14066
14067 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
14068
14069         * cpu-amd64.md: Fix bug in previous patch.
14070         
14071         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
14072         #66650.
14073
14074 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
14075
14076         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14077         mini-exceptions.c: updates for changed stack walk interface.
14078
14079 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14080
14081         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
14082
14083 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
14084
14085         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
14086
14087 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
14088
14089         * driver.c (mini_regression_list): Do not call mono_assembly_close 
14090         since assemblies can't be unloaded.
14091         
14092 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14093
14094         * cpu-amd64.md: Fix more instruction lengths.
14095
14096         * cpu-amd64.md: Fix lengths of some instructions.
14097
14098 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
14099
14100         * inssel.brg: Make the array ldelema check aot friendly.
14101
14102 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14103
14104         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
14105
14106         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
14107
14108 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
14109
14110         * mini-x86.c: Fix build.
14111
14112         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
14113         mono_type_get_underlying_type () helper function to simplify code.
14114         
14115 2004-09-09  Martin Baulig  <martin@ximian.com>
14116
14117         * mini-amd64.c: Don't access `type->data.klass' directly, call
14118         mono_class_from_mono_type() instead since the type may be a
14119         generic instance.
14120
14121 2004-09-09  Martin Baulig  <martin@ximian.com>
14122
14123         * mini-amd64.c (get_call_info): Fix support for generic instances.
14124         (add_valuetype): Use mono_class_from_mono_type() to get the class
14125         since we can be a generic instance.
14126
14127 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
14128
14129         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
14130
14131 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
14132
14133         * liveness.c: reset spill costs on each scan: bug 62107
14134
14135 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
14136
14137         * exceptions-sparc.c (mono_arch_find_jit_info): remove
14138         unnecessary line that doesn't compile
14139
14140 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
14141
14142         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
14143         trampolines, make them call an error function so people can fix their
14144         code.
14145
14146 2004-09-06  Martin Baulig  <martin@ximian.com>
14147
14148         * mini.c (mono_method_to_ir): When initializing locals, handle a
14149         generic instances like a valuetype if it's a valuetype and like a
14150         class if it's a class.
14151
14152 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14153
14154         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
14155         stack. Fixes #64674.
14156
14157         * exceptions.cs: Add test for unwinding of call arguments.
14158
14159 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
14160
14161         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
14162         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
14163         set the carry/borrow flag). The sparc and s390 implementations
14164         can now use optimized versions (and simplify the code). ppc bugfixes.
14165
14166 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14167
14168         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
14169
14170 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
14171
14172         * inssel-amd64.brg: Remove leftover 32 bit rule.
14173
14174         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
14175
14176 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
14177
14178         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
14179         mono_arch_find_jit_info functions into a new function. Fix a memory
14180         leak.
14181
14182         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
14183         refactored code.
14184         
14185 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14186
14187         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
14188         as well.
14189         
14190         * exceptions.cs: Add array size tests.
14191
14192         * mini.c: Allocate a separate icall wrapper for each arity of 
14193         mono_array_new_va. Fixes #59509.
14194
14195         * exceptions.cs: Add testcase for 64578.
14196
14197         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
14198
14199         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
14200         
14201 2004-09-02  Martin Baulig  <martin@ximian.com>
14202
14203         * mini.c (mono_method_to_ir): When initializing the locals, call
14204         handle_initobj() on the generic instance itself, not its
14205         underlying type.
14206
14207 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14208
14209         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
14210         MonoJitInfo for dynamic methods.
14211
14212         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
14213
14214         * mini.c: Add support for freeing JIT data for dynamic methods.
14215         
14216 2004-09-01  Martin Baulig  <martin@ximian.com>
14217
14218         * mini-x86.c (is_regsize_var): Added support for generic
14219         instances.
14220         (mono_arch_emit_prolog): Make this compile again, use
14221         `x86_push_imm_template (code)'.
14222
14223 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
14224
14225         * mini-x86.c: make all push_imm instructions that get
14226         patched always emit the long form
14227
14228 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
14229
14230         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
14231         in a per-domain hash.
14232
14233         * mini-amd64.c (merge_argument_class_from_type): Handle generic
14234         types.
14235
14236 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
14237
14238         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
14239         work.
14240         
14241         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
14242         work.
14243
14244         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
14245         Beginnings of SSE2 support.
14246
14247         * exceptions.cs: Add more tests for checked int<->uint casts.
14248
14249 2004-08-28  Martin Baulig  <martin@ximian.com>
14250
14251         * mini-x86.c (mono_arch_instrument_epilog): Added support for
14252         generic instances.
14253
14254         * mini.c
14255         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
14256         Handle generic instances recursively.
14257
14258 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14259
14260         * iltests.il: test for conv.u8 on a constant
14261
14262 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14263
14264         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
14265         LCONV_x4 (shrun_32 (membase)).
14266
14267 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14268
14269         * inssel-x86.brg: c&p rules for push/setret of long
14270
14271 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14272
14273         * inssel-x86.brg: c&p rules for compare (base, regvar) and
14274         compare (regvar, base)
14275
14276         * inssel-x86.brg: more burg love
14277
14278         * inssel.brg: more cleanup
14279
14280         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
14281
14282 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14283
14284         * basic-long.cs, basic-calls.cs: new tests for optimization.
14285
14286 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
14287
14288         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
14289         patch.
14290
14291 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14292
14293         * mini-amd64.c (read_tls_offset_from_method): Add another case.
14294         
14295 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
14296
14297         * inssel.brg (mini_emit_memcpy): use 
14298         NO_UNALIGNED_ACCESS to disable memcpy optimization
14299
14300 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14301
14302         * mini-amd64.c: Handle generic types in various places.
14303
14304         * mini.c (mono_method_to_ir): Handle generic types in init locals.
14305
14306 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
14307
14308         * mini.c (handle_box): Fix warning.
14309
14310         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
14311
14312         * mini-amd64.h: Enable the emit_state optimization.
14313
14314         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
14315
14316         * mini-amd64.c: Add some new 64 bit peephole opts.
14317
14318         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
14319
14320         * cpu-amd64.md: sreg1 of div instructions must be %rax.
14321
14322         * mini-amd64.c: Register allocator fixes.
14323
14324         * mini.c: Add an optimization to emit_state to avoid allocation of new
14325         registers on some platforms.
14326
14327 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
14328
14329         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
14330
14331         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
14332         allocation. Fixes #63085.
14333
14334         * basic-long.cs: Add new regression test.
14335
14336         * mini-amd64.c: Register allocator improvements.
14337
14338 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
14339
14340         * mini-amd64.c (read_tls_offset_from_method): Add another code
14341         sequence.
14342
14343         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
14344         instruction sequence for nullifying class init trampolines.
14345
14346         * objects.cs: Add new regalloc test.
14347
14348         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
14349
14350 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14351
14352         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
14353         
14354         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
14355         arguments.
14356
14357         * driver.c: Fix profiling after TLS changes.
14358         
14359         * driver.c (mono_main): Set mono_stats.enabled if needed.
14360
14361         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
14362         CEE_BOX.
14363
14364 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
14365
14366         * mini-x86.c: use a 1 op rather than a 2 op tls access
14367         instruction -> faster.
14368
14369 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14370
14371         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
14372         x86 backend.
14373
14374 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
14375
14376         * exceptions-sparc.c (throw_exception): fix typo
14377
14378 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
14379
14380         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
14381         set tree->dreg correctly with tls. Allow any
14382         register to be used.
14383
14384         * mini-x86.c (read_tls_offset_from_method): add new code
14385         generation pattern seen with GCC.
14386
14387
14388 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
14389
14390         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
14391         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14392         exceptions-sparc.c: fix some performance issues in exception
14393         handling and setting of the stack trace for exceptions that were
14394         already thrown.
14395
14396 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14397
14398         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
14399         x86 backend.
14400         
14401         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
14402         registers.
14403
14404 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
14405
14406         This patch inlines tls access, when possible.
14407         
14408         * mini.h: new arch functions for TLS intrinsics.
14409         All platforms updated with a stub.
14410
14411         * mini.c: use the new intrinsics
14412
14413         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
14414         arch specific intrinsic for tls variables
14415
14416 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14417
14418         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
14419         under windows.
14420
14421 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14422
14423         * mini.c: thread local allocation
14424
14425 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
14426
14427         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
14428
14429         * Makefile.am: Link against the static version of libmonogc.
14430         
14431         * Makefile.am: Link the static versions of the convenience libraries
14432         into the mono executable.
14433
14434         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
14435
14436 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
14437
14438         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
14439         on integer overflow.
14440
14441         * mini-amd64.c: Reorganize function call code.
14442
14443         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
14444
14445 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14446
14447         * inssel-x86.brg: use xor eax,eax.
14448         
14449         * basic.cs: new tests
14450
14451 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14452
14453         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
14454         in exception throwing code.
14455         
14456 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14457
14458         * inssel-x86.brg: use xor esi,esi.
14459
14460 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14461
14462         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
14463         can trace methods compiled during mini_init () too.
14464
14465         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
14466         CEE_CONV_U4.
14467
14468 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14469
14470         * Makefile.am: static link on x86 (r=zoltan)
14471
14472 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14473
14474         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
14475         code since it causes some programs to fail.
14476
14477 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
14478
14479         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
14480
14481 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14482
14483         * mini.c: ovfops_op_map - add STACK_OBJ case for
14484         CONV_I 
14485         * basic.cs: add test_0_pin_string as test
14486         case for above.
14487
14488 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14489
14490         * Makefile.am: build C# if srcdir != builddir
14491
14492 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
14493
14494         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
14495         fall-through blocks.
14496
14497 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
14498
14499         * driver.c: enable loop by default again and include abcrem in -O=all.
14500
14501 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
14502
14503         * iltests.il: Add some localloc tests.
14504
14505         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
14506
14507         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
14508         Fixes #62574.
14509
14510         * inssel-amd64.brg: Add some optimizations.
14511
14512         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
14513         for gcc-3.4.
14514
14515         * Makefile.am: Statically link mono against libmono on AMD64.
14516         
14517         * mini-amd64.c inssel-amd64.brg: Optimizations.
14518
14519 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
14520
14521         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
14522
14523         * tramp-amd64.c: Patch calling code in trampolines.
14524
14525 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
14526
14527         * mini-amd64.c: pinvoke struct passing fixes.
14528
14529 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
14530
14531         * mini-sparc.c: redo change, make mono_arch_cpu_init call
14532         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
14533
14534 2004-08-05  Duncan Mak  <duncan@ximian.com>
14535
14536         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
14537         CEE_LDELEM_ANY.
14538
14539 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14540
14541         * mini-amd64.c (emit_move_return_value): Move return value for normal
14542         calls too.
14543
14544 2004-08-05  Martin Baulig  <martin@ximian.com>
14545
14546         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
14547         `type->type'; just modify `type' itself when dealing with enums
14548         and generic instances.
14549         (check_call_signature): Make `simple_type' a `MonoType *'.
14550
14551 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14552
14553         * mini.c: Use OP_PADD to add offsets to addresses.
14554
14555         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
14556
14557 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
14558
14559         * mini-sparc.c (mono_arch_emit_epilog): fix check
14560         for folding last op into restore instruction
14561
14562 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14563
14564         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
14565         helper methods using the code manager.
14566         
14567         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
14568
14569         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
14570
14571 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14572         
14573         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
14574           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
14575
14576         * mini-s390.c: fix tail processing
14577
14578 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
14579
14580         * mini-ppc.c: mul.ovf.un exception name fix.
14581
14582 2004-08-03  Martin Baulig  <martin@ximian.com>
14583
14584         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
14585         instances; before jumping to `handle_enum', also modify `ptype'.
14586
14587 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
14588
14589         * cpu-sparc.md: fcall maximal length too small.
14590
14591 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
14592
14593         * mini-amd64.c mini.h: Add initial support for passing/returning 
14594         structures to/from pinvoked methods.
14595
14596 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
14597
14598         * mini-ppc.c: reg allocator fix.
14599
14600 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
14601
14602         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
14603
14604         * inssel.brg: Optimize memset on 64 bit machines.
14605
14606         * mini-amd64.c: Fix some vararg cases.
14607
14608 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14609
14610         * mini-s390.c: Corrected macro in emit_float_to_int
14611
14612         * s390-abi.cs: Tests to exercise the s390 ABI
14613
14614 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14615
14616         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
14617         caller saved regs.
14618
14619         * basic.cs: Add a test for add.ovf.un.
14620
14621 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
14622
14623         * mini-sparc.c: add case for OP_IDIV_UN
14624
14625 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14626
14627         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
14628         
14629         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
14630
14631 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
14632
14633         * basic.cs: regression tests.
14634
14635         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
14636         regressions.
14637
14638 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14639
14640         * basic.cs: Add a new test.
14641
14642         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
14643         and AOT. Various fixes and optimizations.
14644
14645         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
14646
14647 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
14648
14649         * mini-ppc.c: make sure temp regs are not used for global reg
14650         allocation.
14651
14652 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
14653
14654         * cpu-sparc.md: conv_i8 fix for 64bits
14655
14656         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
14657
14658 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
14659         
14660         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
14661         add opcode for cmp BYTE PTR [eax], imm.
14662
14663         * inssel.brg: Make memcpy and memset takes bases.
14664
14665 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14666
14667         * *-amd64.*: More AMD64 work.
14668         
14669 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14670
14671         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
14672         add a compare-not-equal opcode.
14673         
14674 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
14675
14676         * mini.c: Use mono_init_from_assembly instead of mono_init.
14677         
14678 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14679
14680         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
14681
14682         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
14683
14684         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
14685
14686         * inssel.brg: 64 bit fixes.
14687
14688         * mini.h (MonoCallInst): Add some AMD64 specific data.
14689
14690         * mini.h: Add some OP_P opcodes.
14691
14692 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14693
14694         * basic.cs: tests for 61797 and 61740
14695
14696 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
14697
14698         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
14699         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
14700
14701 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
14702
14703         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
14704
14705         * *-amd64*.*: Ongoing AMD64 work.
14706
14707 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
14708
14709         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
14710
14711         * *-amd64*: Ongoing AMD64 work.
14712
14713         * mini-arch.h: Add AMD64 support.
14714
14715         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
14716
14717         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
14718
14719         * mini-ops.h: Add new opcodes.
14720
14721         * Makefile.am: Add AMD64 support.
14722
14723         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
14724         rules into the inssel-long*.brg files.
14725
14726         * *-amd64.*: Add beginnings of AMD64 backend.
14727
14728 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
14729
14730         * mini.c (print_dfn): commenting out the code that prints
14731         the cil. With -O=deadce, this makes -v -v crash.
14732         
14733         * cpu-pentium.md: make checkthis have a length of 2
14734
14735 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
14736
14737         * mini-sparc.h: fix implementations of __builtin
14738         functions for Sun compiler for V9.
14739
14740 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
14741
14742         * mini.c: use the new stelem.ref wrapper
14743         * exceptions.cs, arrays.cs: new stelem.ref tests
14744
14745 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14746
14747         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
14748         new XSP should work with these changes).
14749
14750 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
14751         
14752         * inssel-{long32,x86,}.brg: trivial optimizations.
14753         
14754 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
14755
14756         * mini.c: load value when emitting box operation in
14757         constrained calls.
14758
14759 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
14760
14761         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
14762         is one byte shorter than cmp DWORD PTR [eax], 0.
14763
14764 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
14765
14766         * inssel-ppc.brg: arguments on the stack are always
14767         relative to the stack pointer (spotted by Neale Ferguson).
14768
14769 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14770
14771         * exceptions-x86.c: delay appending the method name to the trace until
14772         after mono_jit_info_table_find is called, as this gets the real
14773         MonoMethod.
14774
14775 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
14776
14777         * aot.c: register roots
14778
14779 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14780
14781         * aot.c : I could just use PLATFORM_WIN32 flag.
14782
14783 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14784
14785         * aot.c : Reverting the previous fix. This time it broke linux build.
14786
14787 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14788
14789         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
14790
14791 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
14792
14793         * mini.c (handle_stack_args): Remove some more debugging code.
14794         
14795         * mini.c (handle_stack_args): Remove debug output left in by mistake.
14796
14797         * driver.c mini.h aot.c: Allow additional options to be specified with
14798         --aot and pass them to mono_compile_assembly.
14799
14800         * aot.c: Add experimental code to AOT compile all loaded assemblies
14801         on demand and save the code into a cache in the filesystem.
14802
14803         * aot.c: Add support for more wrapper methods.
14804         
14805         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
14806         58863.
14807
14808         * cpu-*.md: Remove removed opcodes.
14809
14810         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
14811         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
14812         related icalls to marshal.c.
14813
14814 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
14815
14816         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
14817
14818         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
14819
14820         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
14821
14822 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
14823         * liveness.c: If liveness is recomputated we need to reset the information
14824         for each variable. This way, if the liveness range has been narrowed
14825         by optimizations that happened after the last computation, we can return
14826         a smaller range.
14827         
14828         For example, if you have
14829         
14830         {
14831                 int i = 0;
14832                 
14833                 // Tons of code that does not affect i
14834                 
14835                 i = foo ();
14836                 ...
14837         }
14838         
14839         i = 0 is dead code and will be removed by SSA. However, when
14840         linear scan gets to the code, i will still appear to be live
14841         throughout the entire block. This prevents good register allocation.
14842
14843 2004-07-06  Martin Baulig  <martin@ximian.com>
14844
14845         * debug-mini.c (mono_debug_init_method): Allow
14846         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
14847         (mono_debug_add_icall_wrapper): New method.
14848
14849         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
14850
14851 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
14852
14853         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
14854         optimization.
14855
14856 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
14857
14858         * aot.c (mono_aot_load_method): Fix loading of debug info.
14859
14860 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14861
14862         * aot.c: Add logging support.
14863
14864 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14865
14866         * mini.h: Add prototype for mono_print_method_from_ip.
14867
14868         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
14869
14870         * inssel.brg: 64 bit fixes.
14871
14872         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
14873         inssel-long32.brg.
14874
14875         * Makefile.am: Add SPARC64 support.
14876
14877 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14878
14879         * aot.c: Fix alignment problems on 32 bit platforms.
14880
14881 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14882
14883         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
14884         SPARC64.
14885
14886         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
14887         problems.
14888
14889         * mini.h: Bump AOT file version. Some 64 bit fixes.
14890
14891 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14892
14893         * inssel-sparc.brg: Add new rule to avoid register moves.
14894
14895         * inssel.brg: Add ldind_to_load_membase helper function.
14896
14897 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
14898
14899         * mini.c: OffsetToStringData intrinsic.
14900         
14901 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14902
14903         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
14904
14905         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
14906         regression tests.
14907
14908         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
14909 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
14910
14911         * mini.c: reinstated mono_compile_get_interface_var()
14912         on x86, too, since the change breaks the Gtk# build there as well.
14913
14914 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14915
14916         * driver.c: remove loop from the default optimizations: it seems to
14917         interact badly with some of the other options (see bug #60613).
14918
14919 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
14920
14921         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
14922         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
14923
14924 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
14925
14926         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
14927         vararg-using methods.
14928
14929 2004-06-21  Martin Baulig  <martin@ximian.com>
14930
14931         * mini/mini-exceptions.c
14932         (mono_handle_exception): Added `gpointer original_ip' argument.
14933         After calling mono_unhandled_exception(), call
14934         mono_debugger_unhandled_exception() and if that returns true,
14935         restore the context and return.
14936
14937 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
14938
14939         * mini-ppc.c: prefer the use of relative branches so
14940         they won't need to be patched in aot code (patch from Patrick Beard).
14941
14942 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
14943
14944         * aot.c: patch from Patrick Beard to make the output assembly
14945         more correct for the MacOSX assembler. Small tweak to
14946         generate sane images on Linux/PPC, too.
14947
14948 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14949
14950         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
14951         case until bug #59509 is fixed (shows up in #60332).
14952
14953 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
14954
14955         * mini.c: make sure the needed wrappers are compiled, too, with
14956         precomp.
14957
14958 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
14959
14960         * driver.c: remove NPTL reference in --version output.
14961
14962 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14963
14964         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
14965         generate valid assembly for the Mach-O assembler.
14966
14967 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
14968
14969         * driver.c: don't include abcrem in the all optimization specifier
14970         since it slows down jit compilation too much for now.
14971
14972 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
14973
14974         * mini.c: use BIGMUL only if both operands have the same signage.
14975         * iltests.il: Test for bug 60056. (errors related to signage in
14976         BIGMUL).
14977
14978         r=lupus.
14979
14980 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
14981
14982         * mini.c, aot.c: memory leak fixes.
14983
14984 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
14985
14986         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
14987
14988 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
14989
14990         * Makefile.am: remove the -static hack completely, it links in
14991         statically glib as well.
14992
14993 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
14994
14995         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
14996         * exceptions.cs: make it compile with new mcs/csc.
14997
14998 2004-06-03 Massimiliano Mantione <massi@ximian.com>
14999         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
15000         and added relevant test case.
15001
15002 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
15003
15004         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
15005         regressions in gtk-sharp.
15006
15007 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
15008
15009         * exceptions.cs: New regression tests.
15010
15011         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
15012
15013 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
15014
15015         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
15016
15017 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
15018
15019         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
15020
15021         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
15022
15023 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
15024
15025         * mini.c (mono_jit_runtime_invoke): Init class in this
15026         method instead of trusting mono_jit_compile_method to
15027         do the work (because wrappers can be in object class)
15028
15029 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
15030
15031         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
15032
15033         * basic-long.cs: New regression test.
15034
15035 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
15036
15037         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
15038         and div/rem checks.
15039
15040 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
15041
15042         * Makefile.am: fix miguel's change to build mono statically against
15043         libmono (track build dependencies).
15044
15045 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15046
15047         * cfold.c: Some glib versions do not have G_MININT32.
15048
15049 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
15050
15051         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
15052         with precision of tan, atan, sin and cos, and implemented related
15053         regressions tests (fixes bug 54467, but one new problem appeared and
15054         is not fixed yet).
15055
15056 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15057
15058         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
15059
15060         * exceptions.cs: Add test for constant folding && division by zero.
15061
15062         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
15063         since driver.c is in libmono too, so the optimization was useless.
15064
15065         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
15066         variable to driver.c so the compiler can emit more efficient code to
15067         access them.
15068
15069 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15070
15071         * Makefile.am: don't distribute generated inssel.[ch] files.
15072
15073 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
15074
15075         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
15076         into the default appdomain. Fixes #58707.
15077
15078         * jit-icalls.c: Remove the broken approximation for truncl, doing
15079         no conversion is better.
15080
15081         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
15082         Fixes #58863.
15083
15084 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
15085
15086         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
15087         of the mcrxr instruction which is not available on some processors
15088         even if it's documented to be. Implement add and sub overflow correctly
15089         (still not complete for long unsigned). Speed up icalls a bit.
15090
15091 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
15092
15093         * mini.c (mono_jit_compile_method_with_opt): Make sure that
15094         we run .cctor in the current domain instead of target_domain.
15095         
15096         Fixes bug #58558, .cctor not being called in -O=shared.
15097
15098 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15099
15100         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
15101
15102 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
15103
15104         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
15105         which can be done with an imm8, do it that way.
15106         (mono_arch_output_basic_block): ditto for a jmp
15107         (mono_arch_emit_prolog): Computate maximum offset of a label.
15108
15109 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
15110
15111         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
15112         now tries to allocate prefered physical reg's for virtual
15113         regs. This reduces the number of emited spills/loads with
15114         20-30% on our core assemblies.
15115
15116 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15117
15118         * jit-icalls.c: truncl() is not needed and trunc() is
15119         the correct thing to do anyway (bug #58287).
15120
15121 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
15122
15123         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
15124         if available.
15125
15126 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
15127
15128         * driver.c: enable loop optimizations by default.
15129
15130 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
15131
15132         * mini-x86.c: fix calc of max loop size when aligning loops start.
15133
15134 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
15135
15136         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
15137         the stack.
15138
15139 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
15140
15141         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
15142         should set carry.
15143
15144         * basic-long.cs: Add tests for add/subtract of immediates with carry.
15145
15146         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
15147         
15148         * mini.c (inline_method): Allways inline some wrappers even if the cost
15149         is too large. Fixes #58785.
15150
15151         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
15152         
15153 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
15154
15155         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
15156         (crichton@gimp.org). Beginning of support for sparc/linux.
15157
15158         * mini-sparc.c: Optimize retrieval of LMF address.
15159
15160 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
15161
15162         * exceptions-ppc.c:  handle alloca in methods with clauses.
15163
15164 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
15165
15166         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
15167
15168 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
15169
15170         * mini.c: Delegate most of the abort signal work to 
15171           mono_thread_request_interruption, which also handles Stop and Suspend
15172           states.
15173
15174 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
15175
15176         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
15177         supports the save/restore lmf opcodes.
15178
15179 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
15180
15181         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
15182         by gcc-3.4 as well.
15183
15184         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
15185
15186 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15187
15188         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
15189         methods which contain array accesses.
15190
15191         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
15192         boundaries. Fixes #58537.
15193
15194         * iltests.il: Add regression test for #58537.
15195
15196 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
15197
15198         * mini-x86.c (mono_arch_local_regalloc): Last part of
15199         fix for bug #58633 (releasing register to early).
15200
15201 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
15202
15203         * basic-long.cs: Add new regression test.
15204
15205 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
15206
15207         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
15208         register too early on the chain.
15209
15210 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15211
15212         * mini.c (create_helper_signature): Use a helper function to reduce
15213         the code which needs to be written. Also set the calling convention of
15214         icalls on windows. Fixes #57840.
15215
15216 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
15217
15218         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
15219         exceptions-ppc.c: added helper function to get the instruction address
15220         from a signal handler context.
15221
15222 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15223
15224         * helpers.c: use g_get_tmp_dir. Invokes happyness 
15225         from gonzalo.
15226
15227 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15228
15229         * helpers.c: Add new env variable to pass args to objdump.
15230         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
15231
15232 2004-05-17  Radek Doulik  <rodo@ximian.com>
15233
15234         * Makefile.am (common_sources): added abcremoval.h so it get
15235         disted and daily mono packages on go-mono.com will build again
15236
15237 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
15238
15239         * abcremoval.c: Fixed coding style, added copyright header.
15240
15241         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
15242
15243         * mini.h: Added prototype for abc removal main function.
15244
15245         * build_relations_propagation_table.pl: Added copyright header.
15246
15247 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
15248
15249         * basic-long.cs: reg test for complex ceq_long bug.
15250
15251 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
15252
15253         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
15254         reg in long and clob case (bug #58343). Fixed/added comments.
15255
15256 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
15257
15258         * mini.c (mono_jit_runtime_invoke): Follow new convention
15259         of calling the invoke method with an function pointer.
15260
15261 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
15262
15263         * ChangeLog: Fix author of memory leak patch.
15264
15265 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
15266
15267         * Makefile.am: fix make dist as well...
15268
15269
15270 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
15271
15272         * cfold.c: Made so that conversions from pointer to int4 are no-ops
15273         on archs where pointers are 4 bytes long.
15274
15275         * Makefile.am: Added abcremoval.c source file.
15276
15277         * abcremoval.c: Added abcremoval.c.
15278
15279         * abcremoval.h: Added abcremoval.h.
15280
15281         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
15282
15283         * inssel.brg: Enabled bounds check removal.
15284
15285         * mini.c: Added support for abcrem optimization.
15286
15287         * mini.h: Added abcrem optimization label.
15288
15289         * driver.c: Added support for abcrem optimization.
15290
15291         * propagated_relations_table.def: Added propagated_relations_table.def.
15292
15293 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
15294
15295         * mini.c, cfold.c: fix style.
15296
15297 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15298
15299         * mini.c: handle issue with the low-level implementation of
15300         some long opcodes (bug #54209).
15301
15302 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
15303
15304         * basic.cs: test for my new cmov stuff.
15305
15306 2004-05-13      Patrik Torstensson
15307
15308         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
15309         opt and added peephole documentation.
15310
15311 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
15312
15313         * tramp-ppc.c: rewrote the generic trampoline code.
15314
15315 2004-05-11      Patrik Torstensson
15316
15317         * mini-x86.c: optimize long shl/shr asm code (one less branch)
15318
15319 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
15320
15321         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
15322
15323         * mini.h mini.c dominators.c: Applied patch from Derek Woo
15324         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
15325
15326         * mini.c: Add new icalls for AsAny marshalling.
15327
15328 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
15329
15330         * tramp-ppc.c, mini-ppc.c: more cleanups.
15331
15332 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15333
15334         * mini.c: no warnings.
15335
15336 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15337
15338         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
15339
15340 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
15341
15342         * mini.c: In the thread abort signal handler, if the thread is in the
15343         process of being stoped, don't throw the Abort exception, just stop the
15344         thread.
15345
15346 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
15347
15348         * tramp-ppc.c: removed old code.
15349
15350 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15351
15352         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
15353         do some simple speed optimizations on ppc.
15354
15355 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
15356
15357         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
15358         and large offsets in load/store.
15359
15360 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15361
15362         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
15363         it causes regressions.
15364
15365 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15366
15367         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
15368         support.
15369
15370 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15371
15372         * jit-icalls.c: remove warnings.
15373         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
15374         speedups for unsafe code.
15375
15376 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
15377
15378         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
15379
15380 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
15381
15382         * basic-calls.cs: Add new regression test.
15383
15384         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
15385         more portable.
15386
15387         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
15388
15389         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
15390         is no longer used.
15391
15392 2004-05-06      Patrik Torstensson
15393
15394         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
15395         long reg allocation in any reg (not only eax:edx) and implemented 
15396         long shl/shr ops in asm instead of helpers.
15397
15398 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
15399
15400         * mini-sparc.h: Fix warnings.
15401
15402         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
15403         stack.
15404
15405         * mini-exceptions.c (mono_handle_exception): Call the filter in a
15406         separate statement for clarity.
15407
15408         * mini-sparc.c: Update status.
15409
15410 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
15411
15412         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
15413         here.
15414
15415 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15416
15417         * inssel-ppc.brg: another small pre-release workaround:
15418         we don't do overflow detection for long_sub_un.
15419
15420 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15421
15422         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
15423         (also works around a weird ppc bug: 57957).
15424
15425 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
15426
15427         * tramp-ppc.c: trampoline fixes.
15428
15429 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
15430
15431         * mini-ppc.c: fixed typos.
15432
15433 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
15434
15435         * mini-ppc.c, exceptions-ppc.c: more code saves registers
15436         at the top of the stack. Fixed typos. Use a frame registers
15437         for all the methods with exception clauses.
15438
15439 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15440
15441         * exceptions-ppc.c: restore fp registers.
15442
15443 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
15444
15445         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
15446         order from the stack top (moved the stack room to save the
15447         return value for trace after the param area). Fixed corruption
15448         in restoring registers on unwind.
15449
15450 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15451
15452         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
15453
15454 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15455
15456         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
15457         and prolog/epilog for methods that use it. Allow
15458         enough param area room for varargs methods. Fix miguel's
15459         breakage in exception handling.
15460
15461 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15462
15463         * Makefile.am: run genmdesc only on current arch.
15464
15465 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15466
15467         * exceptions-x86.c:
15468         * mini-x86.h: fix the build on windows.
15469
15470 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
15471
15472         * 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.
15473
15474         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
15475
15476         * mini-exceptions.c: New file.
15477         
15478         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
15479         Move some parts of the x86 exception handling code to an 
15480         arch-independent file so it can be shared with other ports.
15481
15482 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
15483
15484         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
15485
15486 2004-04-26  David Waite  <mass@akuma.org>
15487
15488         * driver.c: remove comma from end of enumeration declaration
15489
15490 2004-04-26  Jackson Harper  <jackson@ximian.com>
15491
15492         * driver.c: parse config file before loading first assembly. This
15493         allows the user gac to be enabled/disabled. 
15494         
15495 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
15496
15497         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
15498         simpler mechanism: we do not care what is encoded initially
15499         (branch absolute or relative), we care about the code and its
15500         target.  I kept the old code for reference for now.
15501
15502         The new code tries first to determine if the jump is anywhere in
15503         the -/+32 absolute meg range, if it succeeds, it encodes using the
15504         absolute branch;  If not, it tried to find something in the
15505         relative range, if not, it uses the handle_thunk code. 
15506
15507 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
15508
15509         * exceptions-ppc.c: use the correct ip register on macosx.
15510
15511 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
15512
15513         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
15514
15515 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
15516
15517         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
15518         Raise exception on integer divide by zero by hand since the hw
15519         doesn't support it. Handle NaNs in FP compares.
15520
15521 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
15522
15523         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
15524         code reducing duplication between the platforms and enabled
15525         signal exception handling (on linux for now).
15526
15527 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
15528
15529         * exceptions-ppc.c: more macosx support.
15530
15531 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15532
15533         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
15534
15535 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
15536
15537         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
15538
15539 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
15540
15541         * iltests.il: more tests.
15542
15543 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15544
15545         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
15546         vars as well.
15547
15548 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
15549
15550         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
15551
15552 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15553
15554         * liveness.c: Mark variables as volatile in all basic blocks reachable
15555         from exception clauses.
15556
15557 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
15558
15559         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
15560         inlining.
15561
15562 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
15563
15564         * iltests.il, basic.cs: more tests for regalloc.
15565
15566 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15567
15568         * iltests.il: Some tests for register allocation modifications
15569         I have locally.
15570
15571 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
15572
15573         * exceptions.cs: Add regression test for bug #56782.
15574
15575         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
15576         original stack trace if an exception is rethrown. Fixes #56782. Oh,
15577         the beauty of fixing the same thing in 5 different files...
15578
15579 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
15580
15581         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
15582         methods.
15583
15584 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
15585
15586         * mini.c: Add support for STRWLPARRAY marshalling convention.
15587
15588 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
15589
15590         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
15591         to init the context to setup the regs pointer).
15592
15593 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15594
15595         * exceptions-ppc.c: more exceptions work.
15596
15597 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15598
15599         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
15600         not allowed.
15601
15602 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15603
15604         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
15605         can use the memory directly.
15606
15607         * cpu-pentium.md: Update documentation from a post from Zoltan. 
15608
15609         add x86_add_membase, x86_sub_membase, x86_mul_membase
15610
15611 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15612
15613         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
15614         GENERAL_REGS they were also hardcoded for all PPC ports.
15615
15616         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
15617
15618         Remove hard-coded limit for floating point registers, use
15619         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
15620
15621         Notice that in MacOS X calling conventions you can fit a lot more
15622         floating point values in registers, so I should update the PInvoke
15623         test to excercise the passing of floating point values on the
15624         stack (currently broken).
15625         
15626 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
15627
15628         * tramp-ppc.c (create_trampoline_code): Added
15629         JUMP_TRAMPOLINE_SIZE. 
15630         (ppc_magic_trampoline): Follow the pattern from
15631         x86_magic_trampoline: if code is set to zero, return. 
15632         (create_trampoline_code): Always pass MonoMethod to the jump
15633         trampoline, before it was passing a null.
15634         (mono_arch_create_jump_trampoline): Implement the jump stub, could
15635         share the code with mono_arch_create_jit_trampoline. 
15636
15637         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
15638         implemented.
15639         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
15640         implemented.  
15641
15642         * cpu-g4.md: Added length for jmp instruction, the worst case
15643         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
15644         for save_lmf).
15645
15646 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
15647
15648         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
15649
15650 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
15651
15652         * mini.c: Only set bblock->real_offset when adding a new bblock, and
15653         before each IL instruction.
15654
15655         * mini.c (CEE_BOX): Fix warnings.
15656
15657 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15658
15659         * mini.c: removed a few unused vars and extra whitespace.
15660
15661 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
15662
15663         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
15664         checks.
15665         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
15666         index.
15667         (OP_GETCHR): use the above
15668         (CEE_LDELEMA): use the above.
15669
15670         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
15671         version of the generic impl.
15672         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
15673         (CEE_LDELEMA): use the above.
15674
15675 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15676
15677         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
15678         Fixes #56317.
15679
15680         * iltests.il: Added new regression test for #56317.
15681
15682 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15683
15684         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
15685         under NetBSD. Fixes #56450.
15686
15687         * liveness.c (update_gen_kill_set): Fix previous patch.
15688
15689 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15690
15691         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
15692
15693 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
15694
15695         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
15696         ldsfld and ldsflda.
15697
15698         * inssel-sparc.brg: Add more optimizations.
15699
15700         * mini-sparc.c: Replace multiply/divide with shifts if possible.
15701
15702 2004-04-01  Martin Baulig  <martin@ximian.com>
15703
15704         * mini.c (handle_box): New static function; moved the
15705         implementation of CEE_BOX here.
15706         (mono_method_to_ir): Added `constrained_call' variable.
15707         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
15708         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
15709         mono_method_get_constrained() to get the method.
15710
15711 2004-04-01  Martin Baulig  <martin@ximian.com>
15712
15713         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
15714         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
15715         (mono_method_to_ir): We don't need these macros anymore since
15716         mono_class_get_full() already takes care of it. 
15717
15718 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15719
15720         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
15721         use @function (as doesn't accept #function here) and check the return
15722         value of system and stop if fails.
15723
15724 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15725
15726         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
15727
15728 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
15729
15730         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
15731
15732         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
15733
15734         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
15735         #56223.
15736
15737         * basic-long.cs: Add test for negation of Int64.MinValue.
15738
15739 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
15740
15741         * mini-sparc.c: Update status.
15742
15743         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
15744
15745         * exceptions-sparc.c: Fix return value in filters.
15746
15747         * inssel-sparc.brg: Fix register allocation in some rules.
15748
15749 2004-03-28  Martin Baulig  <martin@ximian.com>
15750
15751         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
15752         if neccessary.  
15753
15754 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
15755
15756         * mini-x86.c (mono_arch_patch_code): Fix warnings.
15757         
15758         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
15759         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
15760         remove unused conv_u4 opcode.
15761
15762         * mini-x86.c: Remove valgrind workaround since it slows down things
15763         even when mono is not run under valgrind.
15764
15765 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
15766
15767         * mini-sparc.c: Update status.
15768
15769         * inssel-sparc.brg: Add some optimizations.
15770
15771         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
15772         future delay slot filling. Add support for varargs, tail calls and JMP.
15773
15774         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
15775         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
15776
15777         * inssel.brg: Fix register allocation in OP_ARGLIST.
15778
15779         * inssel.brg: Fix warnings.
15780
15781 2004-03-25  Martin Baulig  <martin@ximian.com>
15782
15783         * mini.c (inflate_generic_field): Removed.
15784         (mini_get_method): Removed, use mono_get_method_full(),
15785         (mini_get_class): Removed, use mono_class_get_full().
15786         (mono_method_to_ir): Pass our generic context to
15787         mono_field_from_token().        
15788
15789 2004-03-25  Martin Baulig  <martin@ximian.com>
15790
15791         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
15792         of a `MonoMethod *'.
15793         (mini_get_method): Take a `MonoGenericContext *' instead
15794         of a `MonoMethod *'.
15795         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
15796         a new local variable called `generic_context' which holds the
15797         current `MonoGenericContext *'; use it to lookup things.
15798
15799 2004-03-24  Martin Baulig  <martin@ximian.com>
15800
15801         * mini.c (mini_get_class): New static method; if we're inside a
15802         generic instance, inflate the class if neccessary.
15803         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
15804
15805 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
15806
15807         * iltests.il: New regression test for #55976.
15808
15809         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
15810         #55976.
15811
15812 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15813
15814         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
15815         output.
15816
15817 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15818
15819         * liveness.c: Consider SSA stores as well as loads when making vars
15820         volatile.
15821
15822         * exceptions.cs: New regression tests for register allocation.
15823         
15824 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
15825
15826         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
15827         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
15828           domain lock only to protect puntual access to data structures.
15829           Added access lock for sighash, jit_icall_hash_name, 
15830           jit_icall_hash_addr and domain->code_mp.
15831
15832 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
15833
15834         * driver.c: Print SIGSEGV handling method.
15835
15836         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
15837
15838         * mini.c (setup_jit_tls_data): Handle case when this is called
15839         multiple times for a thread.
15840
15841         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
15842         is different from fbxx_un. Fixes #54303. Also use constants instead of
15843         magic numbers in a lot of places.
15844
15845 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
15846
15847         * exceptions.cs: Fix cctor test when --regression is used.
15848
15849 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
15850
15851         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
15852         for Linux/ppc.
15853
15854 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
15855
15856         * inssel-ppc.brg: fixed register assignments for some rules.
15857
15858 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15859
15860         * exceptions.cs: Add test for exceptions in static constructors.
15861
15862         * mini.c (mono_jit_compile_method_with_out): Move the calling of
15863         static constructors outside the domain lock. Fixes #55720.
15864
15865 2004-03-17  Martin Baulig  <martin@ximian.com>
15866
15867         * mini.c (get_generic_field_inst): Removed, this'll never happen.
15868         (inflate_generic_field): Take the `MonoMethod *' instead of the
15869         `MonoClass *' and added support for generic method.
15870         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
15871         have a `field->parent->gen_params', only inflate the field if it's
15872         an open constructed type.
15873
15874 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15875
15876         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
15877         exception object instead of the preconstructed ones.
15878
15879 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15880
15881         * mini.c: reverted changed to sigsegv_signal_handler commited
15882         accidentally in the previous patch.
15883
15884 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15885
15886         * mini.c:
15887         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
15888         running --aot with an old assembly.
15889
15890 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
15891
15892         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
15893         point values.
15894
15895         * mini-sparc.c: Add support for v9 branches with prediction.
15896
15897 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
15898
15899         * mini.c (mini_init): #warning is GNUC only
15900
15901         * mini-sparc.h: implement __builtin_frame_address
15902         and __builtin_return_address for Sun C compiler
15903
15904 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
15905
15906         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
15907
15908 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
15909
15910         * basic-calls.cs: Add test for unaligned byref long argument passing.
15911
15912         * mini-ops.h: Add sparcv9 compare and branch instructions.
15913
15914         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
15915         v9 instructions if we have a v9 cpu.
15916
15917         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
15918         registers for global allocation.
15919
15920         * exceptions-sparc.c: Fixes.
15921         
15922 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
15923
15924         * liveness.c (mono_analyze_liveness): Optimized version.
15925
15926         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
15927
15928         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
15929         sparc work.
15930
15931         * basic-float.cs basic-calls.cs: New regression tests.
15932
15933 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
15934
15935         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
15936         sigaltstack implementation.
15937
15938         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
15939         
15940         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
15941         stuff if SIGSEGV_ON_ALTSTACK is not defined.
15942
15943 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
15944
15945         * mini.c: Fix warnings.
15946         
15947         * mini.c (mono_resolve_patch_target): New function which contains the
15948         arch independent part of the patching process.
15949
15950         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
15951         patching code to a separate function.
15952
15953 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
15954
15955         * mini.c (add_signal_handler): ifdef out on Windows
15956
15957 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
15958
15959         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
15960         cpu-sparc.md: Add exception handling support + other fixes.
15961
15962         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
15963         typed GC detection in --version.
15964
15965         * basic.cs exceptions.cs: New regression tests.
15966
15967         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
15968         the arch specific code can store data during a compilation.
15969
15970         * mini-ops.h: Add OP_SETFRET.
15971
15972         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
15973         function, register a separate icall for each arity, so the icalls can
15974         get a wrapper.
15975         
15976         * mini.c (mono_print_tree): Print negative offsets in a more readable
15977         form.
15978         
15979         * mini.c: Make signal handling work on sparc.
15980         
15981         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
15982
15983         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
15984
15985         * jit-icalls.c: Emulate truncl by aintl on solaris.
15986
15987         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
15988
15989 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
15990
15991         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
15992
15993 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
15994
15995         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
15996         a MarshalByRef type, inline a method that performs the check, taking into
15997         account that the object can be a proxy. Also implemented tow new opcodes:
15998         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
15999         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
16000         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
16001
16002 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
16003
16004         * mini-ppc.c: if a relative branch displacement is too big
16005         but it points to and area reachable with an absolute branch, 
16006         avoid the thunks.
16007
16008 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
16009
16010         * mini.c: optimize small copies in cpblk.
16011
16012 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
16013
16014         * basic-calls.cs basic-float.cs: New regression tests.
16015
16016         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
16017         negative offsets from %fp. Implement localloc. Fix local register 
16018         allocation. Fix the case when the this argument needs to be saved to
16019         the stack. Implement some missing opcodes.
16020
16021 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
16022
16023         * mini.c (mini_method_compile): Reenable global regalloc in methods
16024         with exception handlers.
16025
16026         * linear-scan.c (mono_varlist_sort): Fix warning.
16027
16028         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
16029
16030         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
16031         regalloc costs.
16032
16033         * liveness.c: Make all variables uses in exception clauses volatile, to
16034         prevent them from being allocated to registers. Fixes #42136.
16035
16036 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
16037
16038         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
16039         causes regressions.
16040
16041         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
16042         argument to mono_arch_regalloc_cost.
16043
16044         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
16045         precisely.
16046
16047 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
16048
16049         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
16050         Make the cost of allocating a variable to a register arch dependent.
16051
16052         * basic-calls.cs: Fix compilation of tests.
16053         
16054         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
16055         helper function to cut back on the number of #ifdefs needed.
16056
16057         * mini-ppc.c: Fix compilation.
16058
16059         * basic-calls.cs: New regression tests.
16060
16061         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
16062
16063         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
16064         of l0 since that is callee saved.
16065
16066         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
16067         to virtual calls.
16068
16069         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
16070         of delay instruction.
16071
16072         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
16073
16074         * mini.h (MonoCallInst): Add 'virtual' flag.
16075
16076         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
16077
16078 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
16079
16080         * *.cs: New regression tests.
16081
16082         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
16083         work.
16084
16085         * mini.c (mono_runtime_install_handlers): Fix build.
16086
16087         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
16088         'signal_stack_size' members.
16089
16090         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
16091         alternate signal stack.
16092
16093         * exceptions-x86.c: Add stack overflow handling.
16094
16095         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
16096         functions to arch independent code.
16097
16098         * mini.c (mono_print_tree): Print more detailed info for load_membase
16099         opcodes.
16100         
16101 2004-02-23  Martin Baulig  <martin@ximian.com>
16102
16103         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
16104
16105 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
16106
16107         * mini-x86.c: fixed reg allocation for div/rem.
16108
16109 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
16110
16111         * driver.c (mono_main): Report some configuratio options on --version.
16112
16113 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
16114
16115         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
16116         low in the address space. Correctly flush memory in thunks where we
16117         output native code.
16118
16119 2004-02-20  Martin Baulig  <martin@ximian.com>
16120
16121         * mini.c (mini_get_method): New static method; inflate all generic
16122         methods and methods in open generic instances.
16123         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
16124         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
16125
16126 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
16127
16128         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
16129
16130         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
16131
16132 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
16133
16134         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
16135
16136         * mini-sparc.c (flushi mono_arch_output_basic_block): make
16137         it compile using Sun's compiler.
16138
16139 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
16140
16141         * 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.
16142
16143         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
16144
16145 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16146
16147         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
16148         code.
16149         * mini-ppc.c: handle calls outside of the allowed range with thunks
16150         allocated using the code manager.
16151         * tramp-ppc.c: use the code manager to hold generated native code.
16152         Fixed the magic trampoline to just patch vtable entries.
16153
16154 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
16155
16156         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
16157         independent file.
16158
16159 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
16160
16161         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
16162         PPC.
16163
16164         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
16165         if we have a working __thread implementation.
16166
16167         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
16168         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
16169
16170 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
16171
16172         * mini-x86.c: Fix compilation under gcc 2.
16173         
16174 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
16175
16176         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
16177         contains a call to the wrapped function.
16178
16179         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
16180         OP_<CALL>_IMM opcodes, and use them under X86.
16181         
16182         * mini.c (mono_jit_find_compiled_method): Fix warning.
16183
16184         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
16185
16186         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
16187
16188         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
16189         functionality to mini.c.
16190
16191         * mini.c (mono_create_jump_trampoline): New function to create a jump
16192         trampoline. Return a compiled method instead of a trampoline if it
16193         exists. Add a cache for jump trampolines.
16194
16195         * mini.c (mono_jit_find_compiled_method): New function to return a
16196         compiled method if it exists.
16197
16198         * mini-x86.c: Call mono_create_jump_trampoline instead of 
16199         mono_arch_create_jit_trampoline.
16200
16201         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
16202         a jump trampoline. Fixes #52092.
16203         
16204 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
16205
16206         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
16207         which is not up-to-date. Add check_corlib_version () instead.
16208
16209         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
16210         have to call it.
16211         
16212         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
16213         since newer valgrind versions do not need it.
16214
16215         * mini.c (mono_jit_compile_method_with_opt): New helper function to
16216         compile a method with a given set of optimizations.
16217
16218         * mini.c: Compile icall wrappers on-demand instead of at startup.
16219
16220         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
16221         wrapper for an icall.
16222
16223 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
16224
16225         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
16226         #54063.
16227
16228         * iltests.il: Add test for non-empty stack before switch instruction.
16229
16230 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
16231
16232         * mini.c: Add support for new stringbuilder marshalling conventions.
16233
16234         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
16235
16236 2004-02-01  Martin Baulig  <martin@ximian.com>
16237
16238         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
16239         in `ginst->mtype_argv'.
16240
16241 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
16242
16243         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
16244         facilitate grepping.
16245
16246 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
16247
16248         * mini.c: fixed buglet in initobj generic implementation for references.
16249
16250 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
16251
16252         * Makefile.am: make the version script conditional.
16253         * jit-icalls.c: handle missing truncl().
16254
16255 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
16256
16257         * exceptions.cs: Add more tests for double->int conversion.
16258
16259         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
16260         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
16261
16262 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
16263
16264         * driver.c: make --verbose --version emit an error
16265         if the loaded corlib doesn't match the runtime version.
16266
16267 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
16268
16269         * mini-ppc.h: export ppc_patch().
16270         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
16271         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
16272         on par or better than on MacOSX.
16273
16274 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
16275
16276         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
16277         mono_lookup_pinvoke_call.
16278
16279         * mini-x86.c: Under windows, the default pinvoke calling convention is
16280         stdcall. Fixes #52834.
16281
16282         * mini.c (optimize_branches): Add an upper bound to the number of
16283         iterations to prevent infinite loops on strange loops. Fixes #53003.
16284
16285 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
16286
16287         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
16288         and ISINST. Fixes #52093.
16289
16290         * objects.cs (test_0_vector_array_cast): New tests.
16291         
16292 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
16293
16294         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
16295         checking in Array.Set ().
16296
16297         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
16298         #52590.
16299
16300         * object.cs (test_0_multi_array_cast): New regression test.
16301
16302 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
16303
16304         * exceptions-ppc.c: fix build on Linux/PPC.
16305
16306 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
16307
16308         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
16309         running under valgrind.
16310         (x86_magic_trampoline): Fix build bustage.
16311
16312         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
16313         negative values as well. This is needed for the encoding of the line number
16314         info, since sometimes the line numbers are not in increasing order.
16315
16316 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
16317
16318         * cpu-pentium.md (localloc): Increase the size of the localloc 
16319         instruction since it is a loop under Win32.
16320
16321         * debug-mini.c (record_line_number): Get rid of unneccesary memory
16322         allocation.
16323
16324 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
16325
16326         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
16327         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
16328         Max Horn (max@quendi.de). Fix file names in comments.
16329
16330 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
16331
16332         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
16333         avoid stack overflow.
16334         (replace_usage): Avoid uninitialized variable warnings.
16335
16336         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
16337         and taking the address of valuetype variables.
16338
16339 2004-01-03  Patrik Torstensson
16340
16341         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
16342         for other purposes than FP later on.
16343
16344 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
16345
16346         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
16347         of tail calls.
16348
16349 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16350
16351         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
16352
16353 2003-12-30  Patrik Torstensson <p@rxc.se>
16354
16355         * mini-x86.h: Decreased number of availiable fp regs.
16356         Solves corner cases with FP spilling.
16357
16358 2003-12-23  Patrik Torstensson <p@rxc.se>
16359
16360         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
16361         for floating point stack tracking / spilling on x86. 
16362         Fixes bug #49012.
16363         
16364         * basic-float.cs: added float mul overflow test.
16365
16366 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
16367
16368         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
16369
16370 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16371
16372         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
16373         supports for cond branches that overflow the immediate
16374         overflow offset. mcs can compile simple programs.
16375
16376 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16377
16378         * exceptions-ppc.c: exception handling support wip:
16379         finally handlers get run on exception.
16380
16381 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
16382
16383         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
16384         profiling.
16385
16386 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16387
16388         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
16389         initial support for stack walking and unwinding.
16390
16391 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
16392
16393         * driver.c (mono_main): Make corlib-out-of-sync message more 
16394         descriptive. Also remove verify_corlib call.
16395
16396 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16397
16398         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
16399         not overlap with other call's arguments, too.
16400
16401 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
16402
16403         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
16404         move to arch-specific code the choice of arch-specific
16405         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
16406         * mini.c: ensure emulation calls will not interleave
16407         with other calls.
16408
16409 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
16410
16411         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
16412         the magic trampoline stack frame is dropped before executing
16413         the new method.
16414
16415 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
16416
16417         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
16418         and integer to fp conversions. Added support for overflowing
16419         arguments on the stack. Reserve a couple more registers as temps.
16420         Added support for aot compilation (as output still needs to be
16421         tweaked, though).
16422
16423 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16424
16425         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
16426         Don't overwrite return register in some corner cases.
16427
16428 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
16429
16430         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
16431         static constructors when AOT compiling.
16432
16433         * driver.c (mono_main): Call mono_check_corlib_version.
16434
16435 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16436
16437         * cpu-g4.md, basic.cs: fixed div target register.
16438
16439 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
16440
16441         * mini-ppc.c, basic.cs: shl_imm fix with test.
16442
16443 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16444
16445         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
16446         structures by value. Misc fixes.
16447         * objects.cs: more tests.
16448
16449 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
16450
16451         * mini-ppc.c: lconv.ovf.i implemented.
16452
16453 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16454
16455         * mini.c:
16456         (mini_init): don't error out if someone already called g_thread_init.
16457
16458 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16459
16460         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
16461         to be any type per the spec. Fix abnormal memory usage when
16462         the same object is repeatedly thrown.
16463
16464 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
16465
16466         * mini.c: check for overruns in IL code.
16467
16468 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
16469
16470         * TODO: Add/remove some todo entries.
16471
16472 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
16473
16474         * driver.c (mono_main): Call mono_verify_corlib.
16475
16476 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
16477
16478         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
16479         This has been moved to mini.c
16480         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
16481         type being casted is marshalbyref it could be a proxy, so instead of
16482         emitting the type check code, emit a call to a runtime method that will
16483         perform the check by calling CanCastTo if needed.
16484
16485 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
16486
16487         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
16488         methods with large stack frames under Win32.
16489
16490 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
16491
16492         * Makefile.am: Distribute regression tests.
16493
16494         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
16495         at the end instead of inserting each variable into the sorted list.
16496
16497         * linear-scan.c (mono_varlist_sort): New helper function.
16498         
16499 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16500
16501         * mini.c: ensure arguments and locals are within bounds.
16502
16503 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16504
16505         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
16506         related fixes.
16507
16508 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16509
16510         * mini.c (mono_cprop_copy_values): Fix crash.
16511
16512         * aot.c: Set verbosity back to 0.
16513         
16514 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16515
16516         * regalloc.c: complete memory leak fix by Laurent Morichetti
16517         (l_m@pacbell.net).
16518
16519 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16520
16521         * driver.c (main_thread_handler): Revert the previous patch.
16522
16523         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
16524         under valgrind.
16525
16526         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
16527         memory from the memory pool.
16528
16529         * driver.c (main_thread_handler): Turn on all optimizations when
16530         --aot is used.
16531
16532         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
16533         an array for better performance.
16534
16535         * regalloc.c (mono_regstate_assign): Fix memory leak.
16536
16537         * debug-mini.c (mono_debug_serialize_debug_info): New function to
16538         serialize the debug info.
16539
16540         * debug-mini.c (mono_debug_add_aot_method): New function to load the
16541         debug info from the serialized representation.
16542
16543         * aot.c: Save debug info into the generated file and load it when 
16544         loading a method.
16545
16546         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
16547
16548 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16549
16550         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
16551         More FP-related fixes.
16552
16553 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
16554
16555         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
16556         and register allocation buglet. Hello world now runs.
16557
16558 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16559
16560         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
16561         * tramp-ppc.c: fixed class init trampoline.
16562         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
16563
16564 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16565
16566         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
16567         mini.c: more ppc changes/fixes.
16568
16569 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16570
16571         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
16572         Also optimize the case when the arguments are the same in the caller 
16573         and in the callee.
16574
16575         * iltests.il: Add tests for tail calls with valuetype arguments.
16576
16577 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16578
16579         * mini-ppc.c: fixes for struct return type.
16580
16581 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
16582
16583         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
16584         mono_spillvar_offset() to arch-specific code.
16585
16586 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
16587
16588         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
16589
16590 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16591
16592         * exceptions-x86.c: Fix stack space leaks.
16593         
16594         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
16595         registers from the lmf if the method has save_lmf set.
16596
16597 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
16598
16599         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
16600         of icall wrappers into InvokeInDomain, since these are now per-domain.
16601
16602 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
16603
16604         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
16605         make some opcode emulation and intrinsic ops enabled/disabled 
16606         according to the architecture. More fixes.
16607
16608 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
16609
16610         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
16611
16612 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16613
16614         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
16615         arch-specific handling for 'this' and struct return type to
16616         arch-specific code.
16617
16618 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16619
16620         * aot.c: prevent divide by zero error when reporting (it happened with
16621         Accessibility.dll).
16622
16623 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
16624
16625         * mini.h (inst_switch): Remove unused macro.
16626
16627 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16628
16629         * aot.c:
16630         (load_aot_module): free 'info->methods' and 'info' properly. No more
16631         "free(): invalid pointer blah" messages when you have an old aot
16632         compiled assembly.
16633
16634 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
16635
16636         * jit-icalls.c, mini.c: Added support for context static fields.
16637
16638 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16639
16640         * mini.c (mono_method_blittable): Methods which set LastError are not 
16641         blittable either. Fixes #51108.
16642         
16643 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16644
16645         * mini.c: flush icache.
16646         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
16647
16648 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16649
16650         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
16651
16652 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
16653
16654         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
16655         safe on IA32.
16656
16657         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
16658         vararg calls.
16659
16660         * inssel.brg (CEE_MKREFANY): Fix AOT case.
16661
16662 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
16663
16664         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
16665         instruction when the result is discarded.
16666
16667         * iltests.il (test_0_div_regalloc): New regression test.
16668
16669         * arrays.cs: Fix compilation error.
16670
16671 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
16672
16673         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
16674         float rules to inssel-x86.brg: sane architectures with FP registers
16675         don't need to implement these rules.
16676
16677 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16678
16679         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
16680
16681 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16682
16683         * mini.h, inssel-long32.brg: fixed endianess issues in int64
16684         implementation of 32 bit systems.
16685
16686 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16687
16688         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
16689         (Jeroen Zwartepoorte).
16690
16691 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
16692
16693         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
16694         the caller and the callee matches.
16695         
16696         * mini.c (mono_method_to_ir): Add comment.
16697
16698         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
16699         signbit is missing on some platforms.
16700
16701 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
16702
16703         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
16704
16705         * mini.c (setup_jit_tls_data): Call the new function.
16706         
16707         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
16708
16709         * mini-x86.c: Add experimental support for fast access to the lmf
16710         structure under NPTL/Linux 2.6.x.
16711
16712 2003-11-06  Martin Baulig  <martin@ximian.com>
16713
16714         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
16715         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
16716         the debugger.
16717
16718 2003-11-02  Martin Baulig  <martin@ximian.com>
16719
16720         * mini.c (inflate_generic_field): New static method.
16721         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
16722         generic instance and the field is declared in a generic type, call
16723         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
16724
16725 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
16726
16727         * mini.h mini.c (mono_method_same_domain): New function to return
16728         whenever the caller and the callee are in the same domain.
16729
16730         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
16731
16732 2003-10-30  Martin Baulig  <martin@ximian.com>
16733
16734         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
16735         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
16736         method parameters.
16737         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
16738         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
16739
16740 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
16741
16742         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
16743         propagation.
16744
16745         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
16746         object here, so it is in the correct appdomain etc.
16747
16748 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
16749
16750         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
16751         already done.
16752         (mono_method_to_ir): Avoid freeing the type created returned from
16753         mono_type_create_from_typespec, since it is put into an internal cache
16754         by the function. Fixes pointer.exe.
16755
16756         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
16757         trampolines for icalls and pinvokes as well. Fixes #33569.
16758
16759 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
16760
16761         * mini.c: Update after appdomain changes.
16762
16763         * mini.c (mono_jit_compile_method_inner): Allways compile native
16764         method wrappers in the root domain, since there can only be one
16765         instance of them, whose address is stored in method->info.
16766
16767 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
16768
16769         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
16770         environment variable. Instead detect automatically whenever running
16771         under valgrind using the magic macro RUNNING_ON_VALGRIND from
16772         valgrind.h.
16773
16774 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
16775
16776         * trace.c, trace.h: New files that implement the new trace option
16777         parsing. 
16778
16779         * driver.c: Document new --trace options.
16780
16781         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
16782         mini-x86.c: Apply:
16783
16784         -       if (mono_jit_trace_calls)
16785         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
16786
16787         * mini.h: prototypes.
16788         
16789 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
16790
16791         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
16792
16793         * mini.c inssel.brg: Implement typedefbyref opcodes.
16794
16795         * mini.c (mono_jit_compile_method): Remove unused local variable.
16796
16797         * mini.c (mono_jit_compile_method_inner): Ditto.
16798         
16799 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
16800
16801         * tramp-x86.c (x86_class_init_trampoline): Fix build.
16802         
16803         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
16804
16805 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
16806
16807         * mini.c (mono_no_aot): Remove unused global variable.
16808
16809         * mini.c: Thread safety fixes.
16810
16811 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
16812
16813         * mini.c (mono_create_class_init_trampoline): Add a lock around
16814         class_init_hash_addr.
16815
16816         * arrays.cs (test_0_newarr_emulation): Add new regression test for
16817         #30073.
16818
16819         * mini.c: Decompose the NEWARR instruction before decomposing its
16820         arguments. Fixes #30073.
16821
16822 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
16823
16824         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
16825         convention.
16826
16827 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
16828
16829         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
16830
16831         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
16832
16833         * driver.c: Add support for compiling icall wrappers to --compile.
16834
16835 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
16836
16837         * inssel.brg: The empty value in class->interface_offsets is -1, not
16838         0. Fixes #49287.
16839
16840 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
16841
16842         * objects.cs: New test for 'is' operator on an array of interfaces.
16843
16844 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
16845
16846         * tramp-ppc.c: update trampoline code to support jumps
16847         and class initialization.
16848
16849 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
16850
16851         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
16852
16853         * inssel.brg (OP_UNBOXCAST): Fix #46027.
16854
16855         * inssel.brg (OP_UNBOX): Remove unused rule.
16856
16857         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
16858         region instead of one for each method. Fixes #47813.
16859
16860 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
16861
16862         * exceptions.cs (test_0_nested_finally): New regression test for
16863         nested exception handlers.
16864
16865         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
16866
16867         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
16868
16869         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
16870         inlining.
16871
16872         * mini.c (mono_method_check_inlining): Make the inlining limit 
16873         configurable by an environment variable.
16874         
16875         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
16876
16877         * mini.h: Bump AOT file version.
16878
16879         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
16880         token, store the image along with the token, since the token might not 
16881         refer to the same image as the method containing the relocation, 
16882         because of inlining.
16883
16884 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
16885
16886         * mini.c (mono_precompile_assemblies): New function to compile
16887         all methods in all loaded assemblies.
16888
16889         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
16890
16891         * regalloc.h regalloc.c (MonoRegState): Change the type of 
16892         iassign and fassign to int*, since they can contain large negative
16893         values if the register is spilled. Also added some comments. Fixes
16894         #45817.
16895
16896         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
16897         under Win32. Fixes #42964.
16898
16899 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
16900
16901         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
16902
16903         * aot.c: Added support for AOT compiling methods which contain calls
16904         to wrappers. Currently, only remoting-invoke-with-check wrappers are
16905         handled.
16906         
16907         * driver.c (compile_all_methods): Run the compilation in a thread
16908         managed by mono. Fixes #44023.
16909
16910         * mini.c (mono_codegen): Print full method name in verbose output.
16911
16912         * mini-x86.c (mono_arch_patch_code): Fix warning.
16913         
16914         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
16915         jumps, since the method we are jumping to might be domain-specific.
16916
16917         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
16918
16919 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
16920
16921         * inssel.brg: string chars are unsigned.
16922
16923 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
16924
16925         * TODO: New todo item.
16926
16927         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
16928         which calls mono_runtime_class_init and patches the call site to
16929         avoid further calls.
16930         (mono_arch_create_class_init_trampoline): New arch specific function 
16931         to create a class init trampoline.
16932         (create_trampoline_code): Generalized so it can create
16933         class init trampolines as well.
16934
16935         * mini.c (helper_sig_class_init_trampoline): New helper variable.
16936         (mono_create_class_init_trampoline): New function to create and cache
16937         class init trampolines.
16938         (mono_find_class_init_trampoline_by_addr): New function to lookup the
16939         vtable given the address of a class init trampoline. Used by the
16940         patching process.
16941         (mono_codegen): Generate a call to a trampoline instead of
16942         mono_runtime_class_init in LDSFLD[A].
16943         (mono_codegen): Add relocations for the new trampoline.
16944         
16945         * mini.h mini-x86.c aot.c: Added a new relocation type: 
16946         MONO_PATCH_INFO_CLASS_INIT.
16947
16948         * mini.h: Bump AOT version number.
16949
16950         * aot.c: Create a copy of the loaded code instead of using the original
16951         so methods which call each other will be close in memory, improving
16952         cache behaviour.
16953         
16954         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
16955         patch since it breaks the regression tests.
16956         
16957         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
16958         for the register saving instruction sequence since the 
16959         frame_state_for function in glibc 2.3.2 don't seem to detect it.
16960
16961 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
16962
16963         * TODO: Fix todo item && remove another.
16964
16965 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
16966
16967         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
16968         previous checkin.
16969
16970         * aot.c: Moved the check for MONO_LASTAOT into the initialization
16971         function of the module.
16972
16973         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
16974         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
16975         --no-aot command line option.
16976
16977 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
16978
16979         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
16980         by Bernie Solomon (bernard@ugsolutions.com).
16981
16982         * inssel.brg: Refactor the interface offset table related code into
16983         its separate functions and add support for the AOT case.
16984
16985 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
16986
16987         * aot.c (mono_aot_get_method_inner): Fix memory leak.
16988         
16989         * aot.c: Added mono_aot_verbose variable and made all debugging
16990         output depend on the value of this variable.
16991
16992         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
16993         method_label and info_label.
16994
16995         * mini.h mini-x86.c aot.c: Added a new relocation type 
16996         MONO_PATCH_INFO_IID for klass->interface_id.
16997
16998         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
16999         the MonoJitInfo structure.
17000
17001         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
17002         a non-root appdomain in shared mode.
17003
17004 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17005
17006         * aot.c: make aot loader less verbose. Remove free of unused variable.
17007
17008 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
17009
17010         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
17011
17012         * .cvsignore: Added *.dll.
17013
17014         * mini.c (mono_print_tree_nl): New function callable while debugging.
17015
17016         * mini.c (mono_print_code): Export this.
17017
17018         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
17019         patched code.
17020
17021 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
17022
17023         * mini.h (MonoCompile): Added 'jit_info' field.
17024
17025         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
17026         the cfg structure, since it is needed by the AOT compiler.
17027
17028         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
17029
17030         * aot.c: A major rewrite. Changes include:
17031         - save exception tables for methods which have them.
17032         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
17033         to g_module_symbol.
17034         - reworked the file format so it is now much smaller and needs
17035         fewer relocation entries.
17036         
17037 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
17038
17039         * aot.c (load_aot_module): Fix build bustage on platforms without
17040         Boehm GC.
17041
17042 2003-09-04  Martin Baulig  <martin@ximian.com>
17043
17044         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
17045
17046 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
17047
17048         * TODO: Some new optimization ideas.
17049
17050         * aot.c: Move AOT module loading logic here from mono_assembly_open.
17051
17052         * aot.c: Save the optimization flags used to compile the code into
17053         the AOT module.
17054
17055         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
17056         support emitting domain specific code.
17057         
17058         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
17059         no longer domain neutral. It can be made domain neutral by compiling 
17060         with --optimize=shared.
17061
17062         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
17063         between appdomains.
17064
17065         * driver.c mini.h mini.c: New --no-aot debugging option which disables
17066         loading of AOT code.
17067
17068         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
17069         
17070         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
17071         if there is no domain neutrality information.
17072
17073 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
17074
17075         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
17076         format version into the generated library.
17077
17078         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
17079         callee method into the caller since one of them could be shared.
17080
17081         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
17082         system exceptions from AOT code now works.
17083
17084         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
17085         method if it is domain neutral and the callee is not.
17086
17087         * graph.c (cfg_emit_one_loop_level): Fix warning.
17088
17089 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
17090
17091         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
17092         last checkin.
17093
17094 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
17095
17096         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
17097         is needed  by code which is executed before mono_runtime_init ().
17098         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
17099         
17100         * mini.c (mono_thread_abort): Fix warning.
17101         (mono_jit_compile_method): Call static constructor in the AOT case too.
17102
17103         * aot.c (mono_compile_assembly): Fix warning.
17104
17105 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17106
17107         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
17108
17109 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
17110
17111         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
17112
17113         * cpu-pentium.md: Fix the length of call opcodes so they include the
17114         ESP restoring instruction. Fixes #47968.
17115
17116 2003-08-28  Martin Baulig  <martin@ximian.com>
17117
17118         * mini-x86.c (mono_arch_call_opcode): Added support for
17119         MONO_TYPE_GENERICINST.
17120
17121         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
17122
17123 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
17124
17125         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
17126         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
17127
17128         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
17129         metadata_section.
17130
17131 2003-08-26  Martin Baulig  <martin@ximian.com>
17132
17133         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
17134         when reporting an error, set this to the actual error location.
17135         (mono_method_to_ir): Report the correct error location if
17136         get_basic_blocks() returned an error.
17137
17138 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
17139
17140         * mini.c (mono_type_blittable): OBJECT is not blittable.
17141         (mono_method_blittable): Methods which have marshalling descriptors
17142         are not blittable either. Fixes #47842.
17143
17144 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
17145
17146         * driver.c mini.c: Use an environment variable instead of a global 
17147         variable. Also fix the build.
17148
17149         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
17150         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
17151         reporting this. 
17152
17153         * driver.c mini.c: Added --with-valgrind option to turn off some
17154         code which prevents mono from running under valgrind.
17155
17156         * mini.c (mono_emit_call_args): Fixed warning.
17157
17158         * mini.c (mono_emulate_opcode): Fixed warning.
17159
17160 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17161
17162         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
17163         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
17164         regalloc.c, regalloc.h: specify available registers in arch-specific
17165         code and support floats in the regallocator (patch by Laurent Morichetti 
17166         <l_m@pacbell.net>)
17167
17168 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17169
17170         * mini.c: mono_thread_current() can be called only after
17171         mono_runtime_init(): rearrange code to not call it early on.
17172
17173 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17174
17175         * mini.c: allocate jump tables in the code mempools.
17176
17177 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17178
17179         * mini.c, mini.h: make sure per-thread data allocated by the jit is
17180         freed.
17181
17182 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
17183
17184         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
17185         12 to 16.  This fixes bug #47453.
17186
17187
17188 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
17189
17190         * mini-ppc.c: fixed indexed load and unsigned compares.
17191
17192 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
17193
17194         * mini.c: reenabled installation of handler for
17195           thread abort signal.
17196
17197 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17198
17199         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
17200         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
17201         until it's fixed and actually useful.
17202
17203 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17204
17205         * inssel-long32.brg: couple more opcodes implemented.
17206
17207 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
17208         
17209         * mini-sparc.c: Even more opcodes implemeted.
17210
17211 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
17212
17213         * mini-sparc.c: More opcodes implemented.
17214
17215 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
17216
17217         * mini-sparc.c: More opcodes implemented.
17218
17219 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
17220
17221         * inssel-sparc.brg: Add some needed rules.  Direct
17222         copy from PPC.
17223         * Makefile.am: Use inssel-sparc.brg
17224         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
17225         an assert happy for now.
17226
17227 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
17228
17229         * mini-sparc.c: Fixed compile errors.
17230         * exceptions-sparc.c: Same.  We now produce a mono binary 
17231         on sparc-linux.  Yea.
17232
17233 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
17234
17235         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
17236         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
17237         They compile, but do not work.
17238
17239 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17240
17241         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
17242         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
17243         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
17244         (ct@gentoo.org).
17245
17246 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17247
17248         * mini.c: more opcodes implemented and better support for generics.
17249
17250 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17251
17252         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
17253         * mini.c, mini.h: first cut at generics support: some new instructions 
17254         added and changed the behaviour of some of the existing ones.
17255
17256 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
17257
17258         * mini.c: Removed definition of metadata_shared mutex here.
17259
17260 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17261
17262         * mini-x86.c: make vararg calls work for instance methods.
17263
17264 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
17265
17266         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
17267         returns the arguments in a separte list, now.
17268
17269 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17270
17271         * aot.c, mini.c: updates for array type representation changes.
17272
17273 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
17274
17275         * mini.c: register function to perform jit shutdown.
17276
17277 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17278
17279         * mini.c: use a faster allocator if possible.
17280
17281 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17282
17283         * aot.c: some cleanups and portability changes.
17284
17285 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17286
17287         * mini.c: use faster allocation for CEE_BOX if possible.
17288
17289 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17290
17291         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
17292         Moved inlined mempcy code to its own function so that is can be
17293         reused. Added an inline memset function as well (optimized initobj).
17294         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
17295
17296 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17297
17298         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
17299
17300 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
17301
17302         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
17303         arch code can setup the cpu for CLR execution, if needed.
17304         We use it on x86 to set the precision of FP operations.
17305
17306 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
17307
17308         * mini.c: disable some optimizations if we can guess they'll cost too
17309         much for a given method.
17310
17311 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17312
17313         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
17314         
17315 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17316         * mini.h mini.c mini-x86.c: Added instruction level coverage 
17317         info collection support.
17318
17319 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17320
17321         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
17322         is now implemented in the profiling API. Get rid of a couple of
17323         unnecessary global variables.
17324
17325 2003-06-15  Nick Drochak <ndrochak@gol.com>
17326
17327         * basic-long.cs: tests for negative values for bigmul, and unsigned.
17328         * cpu-g4.md: add op_bigmul and op_bigmul_un
17329         * cpu_pentium.md: add op_bigmul_un
17330         * inssel-long32.brg: add rule for unsigned bigmul
17331         * mini-ops.h: define OP_BIGMUL_UN
17332         * mini-x86.c: THE BUG: handle (un)signed properly
17333         * mini.c: choose unsigned opcode if needed.
17334         This set of patches fixes bug #44291
17335
17336 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
17337
17338         * mini.c (optimize_branches): improved to handle all kinds of
17339         conditional branches.
17340
17341 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17342
17343         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
17344         don't raise exceptions.
17345
17346 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17347
17348         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
17349         to arch-specific files.
17350
17351 2003-06-09  Martin Baulig  <martin@ximian.com>
17352
17353         * Makefile.am (libs): Added $(LIBGC_LIBS).
17354
17355 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
17356
17357         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
17358         and OP_ATAN (fixes bug#44293).
17359
17360 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
17361
17362         * Makefile.am, mini-x86.c: rename cpu description array to
17363         pentium_desc, since some compilers define the 'pentium' preprocessor
17364         symbol.
17365
17366 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
17367
17368         * mini.c (mini_select_instructions): add explicit branch if the
17369         following block is not the false target of a conditional branch -
17370         we need this with any optimization that reorder or remove bblocks
17371
17372         * mini.c (optimize_branches): bug fixes
17373
17374 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
17375
17376         * mini.c (mono_method_to_ir): inline static readonly fields
17377
17378         * ssa.c (fold_tree): start cfold support for long (very simple
17379         cases only)
17380
17381         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
17382
17383 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17384
17385         * inssel.brg: fixed memcpy (bug #44219).
17386
17387 2003-06-05  Dick Porter  <dick@ximian.com>
17388
17389         * driver.c: Set the glib log levels to not abort if g_message
17390         recurses.
17391
17392         g_set_prgname() has to happen before mini_init() so that the
17393         process handle gets the info.
17394         
17395 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17396
17397         * driver.c: add intrins to the default optimizations to get wider
17398         exposure.
17399
17400 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17401
17402         * mini.h: some large basic blocks will overflow a 16-bit
17403         integers for symbolic registers.
17404
17405 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17406
17407         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
17408         (mono_arch_output_basic_block): fix bug 43499 
17409
17410 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17411
17412         * mini.c: kill duplicated definition of mono_debug_format.
17413
17414 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
17415
17416         * mini-x86.c, arrays.cs: fixed register allocation bug.
17417
17418 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17419
17420         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
17421
17422         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
17423
17424 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17425
17426         * mini.c:
17427         (print_method_from_ip): also print source location information if
17428         available.
17429
17430 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
17431
17432         * mini.c (mono_find_block_region): bug fix in region code
17433         (mini_method_compile): enable removing unreachable code again, but
17434         only in methods without exception clauses.
17435
17436 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17437
17438         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
17439         Implemented arglist opcode and handling of TypedReference type.
17440         Fixed x86 call convention when a structure is returned.
17441         Minimal support for calling static vararg methods.
17442
17443 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
17444
17445         * mini.c (mini_method_compile):  always remove unreachable code,
17446         because the code in them may be inconsistent  (access to dead
17447         variables for example).
17448
17449 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17450
17451         * driver.c, debug-mini.c: warning fixes.
17452
17453 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
17454
17455         * Makefile.am, jit.h, mini.h: install header for embedding mono.
17456
17457 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
17458
17459         * mini.c: thread-static fields are registered in mono_class_vtable(),
17460         so ensure the function is called before checking for them.
17461
17462 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
17463
17464         * mini.c (optimize_branches): fix for bug 43586
17465
17466         * jit-icalls.c (mono_llmult_ovf): added an additional check for
17467         overflow (fixes Bug #43639)
17468
17469 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17470
17471         * mini.c, objects.cs: allow the use of stobj for primitive types.
17472
17473 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17474
17475         * mini.c: be less strict about argument checking until we support
17476         running the verifier.
17477
17478 2003-05-27  Nick Drochak <ndrochak@gol.com>
17479
17480         * basic-long.cs: tests for (ulong)int * (ulong)int also
17481         * mini.c: use the same trick for (ulong)int * (ulong)int
17482
17483 2003-05-27  Nick Drochak <ndrochak@gol.com>
17484
17485         * basic-long.cs: add regression test for (long)int * (long)int
17486         * cpu-pentium.md: add op_bigmul specification
17487         * inssel-long32.brg: add OP_BIGMUL rule
17488         * mini-ops.h: add OP_BIGMUL
17489         * mini-x86.c: register allocator: handle case where src1 needs to be
17490         in EAX.
17491         * mini.c: substitute special BIGMUL opcode in the tree for 
17492         (long)int * (long)int
17493
17494 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
17495
17496         * jit-icalls.c: call the type ctor on field access if needed.
17497
17498 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17499
17500         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
17501         to a method (including results of ldelema, bug#43207).
17502
17503 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
17504
17505         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
17506         colors to show exception handler blocks.
17507
17508         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
17509         (fix for pinvoke7.cs).
17510
17511 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17512
17513         * mini.h, mini.c: ensure correct initialization order for types that
17514         require it. Prepare for lazy compilation of jit icall wrappers.
17515         Provide a name for opcode emulation to reduce unneeded mallocing.
17516
17517 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
17518
17519         * mini-x86.c: better register restoring code and profiling
17520         support for tail calls.
17521
17522 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17523
17524         * mini.h, driver.c: prepare for leaf methods optimization.
17525
17526 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17527
17528         * mini.c: get targets of branches before converting a method.
17529
17530 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
17531
17532         * mini.c (optimize_branches): added some experimental code (disbaled) 
17533
17534 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
17535
17536         * mini.c (optimize_branches): fix branch to branch optimization 
17537
17538         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
17539
17540         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
17541
17542         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
17543
17544         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
17545         if needed.
17546
17547 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
17548
17549         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
17550         enable use of interface variables again.
17551
17552         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
17553         I1 to registers because there is no simply way to sign extend 8bit
17554         quantities in caller saved registers on x86.
17555
17556         * inssel-float.brg: set costs of some rules to 2 so
17557         that monobure always select the arch. specific ones if supplied,
17558         regardless of the order we pass the files to monoburg.
17559
17560 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17561
17562         * mini.c, mini-x86.c: since the magic trampoline for jumps
17563         can't patch the code directly, we do it as soon as the
17564         method gets compiled.
17565
17566 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17567
17568         * mini-x86.c, mini.h: introduce a new patching method
17569         to support CEE_JMP and tail calls.
17570         * mini.c: obey tail.call. Don't precompile methods target
17571         of CEE_JMP.
17572         * tramp-x86.c: new trampoline code to handle methods
17573         reached through a jump.
17574
17575 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
17576
17577         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
17578         bit values to registers
17579
17580 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
17581
17582         * mini.c (mono_compile_get_interface_var): share interface
17583         variables if possible.
17584
17585 2003-05-16  Martin Baulig  <martin@ximian.com>
17586
17587         * debug-mini.c (mono_init_debugger): New function to initialize
17588         the debugger.  This is not in the debugger since it needs to
17589         access some of mini's internals.
17590
17591 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17592
17593         * mini.c (mono_method_to_ir): inlining fixes/cleanups
17594
17595 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
17596
17597         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
17598         for value type handling.
17599
17600 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17601
17602         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
17603         (mono_method_check_inlining): enable inlining of all kinds of wrappers
17604
17605 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
17606
17607         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
17608           the constructor through a proxy.
17609
17610 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17611
17612         * jit-icalls.c, inssel.brg: fixes to array element address
17613         calculations.
17614
17615 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
17616
17617         * mini-x86.c (is_regsize_var): allocate pointer to registers
17618
17619 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17620
17621         * driver.c: fixed typo, added intrins to the set of optimizations
17622         tested with regressions.
17623
17624 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
17625
17626         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
17627         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
17628         test case.
17629
17630 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
17631
17632         * inssel.brg: remove some common pop instructions without side effects
17633
17634 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17635
17636         * inssel-x86.brg: fixed thinko in int to double conversions.
17637
17638 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
17639
17640         * mini.c, jit-icalls.c: added runtime thread-static variable support.
17641
17642 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17643
17644         * inssel-long32.brg: two more missing instructions.
17645
17646 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
17647
17648         * mini.c (mono_emit_call_args): set the cil_code for all arguments
17649         if not already set.
17650
17651 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
17652
17653         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
17654         correctly.
17655
17656         * basic-float.cs: Added tests for negative zero.
17657
17658 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17659
17660         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
17661         a couple of missing operations for long casts, with test cases.
17662
17663 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17664
17665         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
17666
17667 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
17668
17669         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
17670         code size estimation.
17671
17672 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
17673
17674         * mini.c (mono_jit_create_remoting_trampoline): make it work with
17675         abstract methods (fix bug 42542)
17676
17677         * aot.c: add ability to handle array types
17678         
17679 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
17680
17681         * mini.c: Call the _specific versions of the object allocation
17682         functions if possible.
17683
17684 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17685
17686         * driver.c: call setlocale ().
17687
17688 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17689
17690         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
17691         windows build.
17692
17693 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
17694
17695         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
17696
17697         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
17698         wrappers (fix bug 42122)
17699
17700 2003-05-04  Martin Baulig  <martin@ximian.com>
17701
17702         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
17703
17704         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
17705         s/mini_set_defaults/mono_set_defaults/g.
17706
17707 2003-05-04  Martin Baulig  <martin@ximian.com>
17708
17709         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
17710
17711 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17712
17713         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
17714         (reported by Don Roberts).
17715
17716 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17717
17718         * mini.c: temporarily work around two bugs for this release.
17719
17720 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17721
17722         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
17723         that contains -export-dynamic and it makes using the ld script
17724         useless.
17725         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
17726
17727 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17728
17729         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
17730         specific cpu.
17731
17732 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17733
17734         * mini.c: make sure leave calls all the needed finally blocks,
17735         even when the target jumps out of multiple exception clauses.
17736
17737 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17738
17739         * ldscript, Makefile.am: add linker script to reduce the number of
17740         exported symbols (should also fix the issues with libwine defining
17741         some of the same symbols in io-layer).
17742
17743 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
17744
17745         * driver.c (mini_main): Avoid assertion when no file name is given on 
17746         the command line.
17747
17748 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
17749
17750         * driver.c: added --version/-V command line option.
17751         Added the inline optimization in the regression tests.
17752
17753 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17754
17755         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
17756         to the type in the method signature (fixes bug#42134).
17757
17758 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
17759
17760         * mini.c: when inlining, check this is not null only when needed (bug #42135).
17761
17762 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
17763
17764         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
17765
17766 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17767
17768         * driver.c: fixed bug #42100.
17769
17770 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
17771
17772         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
17773
17774 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17775
17776         * mini.c: moved most of the code required to do inlining to its own
17777         function so it can be reused. Inline also ctors if appropriate.
17778
17779 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
17780
17781         * Makefile.am: Link with -export-dynamic so shared libs loaded by
17782         the runtime can call mono API functions.
17783
17784 2003-04-27  Martin Baulig  <martin@ximian.com>
17785
17786         * debug-mini.c (mono_debug_init_method): Added
17787         `guint32 breakpoint_id' argument; if the method has a breakpoint,
17788         send a notification to the debugger.
17789
17790         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
17791         running in the Mono Debugger, just pass the breakpoint number to
17792         mono_debug_init_method().
17793
17794         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
17795
17796 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
17797
17798         * mini.c: allow some more unsafe compares.
17799
17800 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17801
17802         * mini-x86.c, Makefile.am: make distcheck works (partially from
17803         a patch by Richard Lee <r.h.lee@attbi.com>).
17804         * regset.c, regset.h: removed, they are unused.
17805
17806 2003-04-25  Dick Porter  <dick@ximian.com>
17807
17808         * driver.c: Usage reports the name as 'mono' not 'mini'
17809         * exceptions-x86.c: Build and run on freebsd
17810
17811 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
17812
17813         * Makefile.am: install the program with the 'mono' name and
17814         the library as libmono instead of mini and libmini.
17815
17816 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17817
17818         * driver.c: provide the APIs for the embedding interface of the old jit.
17819
17820 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
17821
17822         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
17823
17824 2003-04-23  Martin Baulig  <martin@ximian.com>
17825
17826         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
17827
17828         * driver.c: Added `--debug' command line argument to enable
17829         debugging support.
17830
17831 2003-04-23  Martin Baulig  <martin@ximian.com>
17832
17833         * debug.[ch]: Removed.  The code is now in
17834         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
17835
17836         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
17837         last six months.
17838
17839 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
17840
17841         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
17842
17843 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17844
17845         * mini.c:
17846         (mini_cleanup): moved mono_runtime_cleanup call after the call to
17847         mono_domain_finalize.
17848         (mini_method_compile): use mono_method_profile* if the the option is
17849         enabled.
17850
17851 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
17852
17853         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17854         methods with their wrapper.
17855
17856         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17857         methods with their wrapper.
17858
17859         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
17860         their wrapper.
17861
17862         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
17863         wrapper.
17864
17865         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
17866         methods.
17867
17868 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
17869
17870         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
17871
17872 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
17873
17874         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
17875         of the mempool. This is slightly faster and uses less memory
17876
17877 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17878
17879         * mini.c: avoid O(n) allocation for variables.
17880
17881 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17882
17883         * mini.c: handle items on the stack after inlining methods.
17884
17885 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17886
17887         * mini.c: make the method->opcode optimization dependent
17888         on MONO_OPT_INSTRINS and do it lazily.
17889
17890 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17891
17892         * driver.c: print overall results at the end of regression run.
17893
17894 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
17895
17896         * inssel.brg: don't overwrite symbolic registers.
17897
17898 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17899
17900         * inssel-x86.brg: fix conversion from long to float.
17901
17902 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
17903
17904         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
17905
17906 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
17907
17908         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
17909
17910         * driver.c: Added --print-vtable option as in the old JIT.
17911
17912 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17913
17914         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
17915
17916 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
17917
17918         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
17919
17920 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
17921
17922         * mini.c regalloc.c regalloc.h: Fix memory leak.
17923
17924 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
17925
17926         * aot.c (mono_aot_get_method): register all used strings
17927
17928 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17929
17930         * mini.c: always intern strings references with ldstr at compile time.
17931
17932 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17933
17934         * Makefile.am: add BUILT_SOURCES.
17935
17936 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17937
17938         * driver.c: give a better error message when the assembly to execute
17939         doesn't have an entry point.
17940
17941 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
17942
17943         * Makefile.am: added hack for automake
17944
17945         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
17946         correct sematics.
17947
17948         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
17949
17950 22003-04-07  Martin Baulig  <martin@ximian.com>
17951
17952         * Makefile.am: Added Makefile.am.
17953
17954         * debugger-main.c: Removed, this is now in the debugger where it
17955         belongs.
17956
17957         * mini.pc.in: Call this package `mini' for the moment.
17958
17959
17960
17961
17962
17963
17964
17965
17966
17967
17968
17969
17970
17971