2008-12-05 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / mini / ChangeLog
1 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2
3         * mini-mips.c: cleanup warnings
4         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
5         (mips_adjust_stackframe): handle case of taking the address of stack locals
6         
7 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8
9         * aot-compiler.c: Implement a few functions missing from the asm writer.
10         (emit_method_code): Only write symbols for methods when using the bin
11         writer, since the assembler can't deal with the characters in our method
12         names.
13
14         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
15
16         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
17         call.
18
19         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
20         a bit to also restore %rax.
21
22 2008-12-05  Mark Probst  <mark.probst@gmail.com>
23
24         * mini-ppc.c: Some simple merges from mini-ppc64.c.
25
26 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
27
28         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
29         arguments.
30
31 2008-12-05  Mark Probst  <mark.probst@gmail.com>
32
33         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
34
35         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
36         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
37
38         * exceptions-ppc64.c: Removed.
39
40         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
41
42 2008-12-05  Mark Probst  <mark.probst@gmail.com>
43
44         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
45         tramp-ppc64.c.
46
47         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
48
49         * tramp-ppc64.c: Removed.
50
51 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
52
53         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
54         the TYPESPEC table.
55
56 2008-12-05  Mark Probst  <mark.probst@gmail.com>
57
58         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
59
60         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
61         mini-ppc.h instead of mini-ppc64.h.
62
63         * mini-ppc64.h: Removed.
64
65 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
66
67         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
68         
69         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
70         
71 2008-12-05  Mark Probst  <mark.probst@gmail.com>
72
73         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
74         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
75         code easier.
76
77 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
78
79         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
80
81 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
82
83         * basic-simd.cs: Tests for operator == and != on Vector4f.
84
85 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
86
87         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
88
89         * simd-intrinsics.c: Kill useless enum.
90
91 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
92
93         * cpu-mips.md: add long_conv_to_ovf_i4_2
94         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
95
96 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
97
98         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
99         
100         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
101
102 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
103
104         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
105         
106 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
107
108         * basic-simd.cs: Add tests for new methods.
109
110 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
111
112         * simd-intrinsics.c: Add support for operator == and !=
113         on Vector4(u)i.
114
115         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
116
117 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
118
119         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
120
121 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
122
123         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
124
125         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
126         MONO_PATCH_INFO_ICALL_ADDR.
127
128         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
129
130         * aot-compiler.c: Resurrect full-aot support.
131
132 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
133
134         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
135         
136 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
137
138         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
139         
140 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
141
142         * basic-simd.cs: Fix tests to work under ppc.
143         Remove tests for methods that will be removed.
144
145 2008-12-03  Mark Probst  <mark.probst@gmail.com>
146
147         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
148         generic type (via a typedef or typeref) correctly.
149
150 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
151
152         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
153         diagnose an assertion failure.
154
155 2008-12-02  Mark Probst  <mark.probst@gmail.com>
156
157         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
158         Fix trampoline size.
159
160         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
161         conversion opcodes are implemented natively instead via emulation.
162
163 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
164
165         * cpu-mips.md: remove mips_xori
166
167         * mini-ops.h:  remove mips_xori
168
169         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
170
171         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
172         
173         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
174         
175 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
176
177         * cpu-mips.md: fix instruction lengths.
178
179         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
180
181         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
182
183         * mini-ops.h: fix slti / sltiu op profiles.
184         
185 2008-12-02  Martin Baulig  <martin@ximian.com>
186
187         * method-to-ir.c (mono_method_to_ir): Disable debugging
188         information for the init locals block to make the debugger stop
189         after all locals have been initalized.
190
191 2008-12-02  Martin Baulig  <martin@ximian.com>
192
193         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
194         running inside the debugger.
195
196 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
197
198         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
199         is enabled.
200
201         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
202         alu->alu imm optimization which only shows if deadce is disabled.
203
204         * aot-compiler.c: Rename the function names for the binary and asm writers
205         so they can coexist in the same process. Rework the xdebug code to use the
206         asm writer. This avoids the need to call into the runtime to dump the
207         debugging info. Add more debugging info for types.
208
209         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
210
211         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
212         cpu description tables, they can't occur in cpu-<ARCH>.md.
213
214         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
215         the stack in CEE_LDFLDA. Fixes #450542.
216
217         * generics.cs: Add a new test.
218
219 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
220
221         * mini-ops.h: updated MIPS opcodes
222         * mini-mips.c: decompose long opts
223         * mini-mips.h: decompose long opts
224         
225 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
226
227         * cpu-mips.md: fix length on int_rem_un
228         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
229         
230 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
231
232         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
233
234         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
235
236 2008-11-29  Martin Baulig  <martin@ximian.com>
237
238         * mini-exceptions.c (mono_handle_native_sigsegv): Check
239         mono_debug_using_mono_debugger() in addition to the
240         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
241
242 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
243
244         * mini-ops.h: updated more MIPS opcodes
245         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
246         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
247         
248 2008-11-28  Mark Probst  <mark.probst@gmail.com>
249
250         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
251
252 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
253
254         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
255         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
256         * mini-ops.h: correct selected mips opcode entries
257         
258 2008-11-28  Mark Probst  <mark.probst@gmail.com>
259
260         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
261         make them work.
262
263 2008-11-28  Mark Probst  <mark.probst@gmail.com>
264
265         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
266
267 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
268
269         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
270         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
271         * mini-mips.h: disable IMT
272         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
273         
274 2008-11-28  Mark Probst  <mark.probst@gmail.com>
275
276         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
277
278 2008-11-28  Mark Probst  <mark.probst@gmail.com>
279
280         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
281
282 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
283
284         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
285         consistency.
286
287 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
288
289         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
290         for Set/GetVector aligned versions.
291
292 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
293
294         * basic-simd.cs: Add tests for Get/SetVector.
295
296 2008-11-27  Mark Probst  <mark.probst@gmail.com>
297
298         * mini.c: Removed g_slist_append_mempool().  Now in
299         metadata/mempool.c.
300
301 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
302
303         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
304         size properly and make the bounds check optional.
305
306         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
307         for SetVector and IsAligned.
308
309 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
310
311         * mini.c: Remove unused mono_normalize_opcodes () function.
312
313 2008-11-26  Mark Probst  <mark.probst@gmail.com>
314
315         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
316         using the new atomic add ops now.
317
318         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
319         add.
320
321 2008-11-26  Mark Probst  <mark.probst@gmail.com>
322
323         * mini-ppc64.c: Several fixes.
324
325 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
326
327         * cpu-mips.md: added jump_table
328         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
329
330 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
331
332         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
333
334 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
335
336         * mini-ops.h: corrected a handful of MIPS opcodes.
337
338 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
339
340         * aot-compiler.c: MIPS to use ELF writer
341
342 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
343
344         * mini-codegen.c: remove MIPS specific assert.
345
346 2008-11-25  Mark Probst  <mark.probst@gmail.com>
347
348         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
349         fixes.  PPC64 now passes most of the runtime regressions.
350
351 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
352
353         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
354         volatile intervals a bit.
355
356 2008-11-24  Mark Probst  <mark.probst@gmail.com>
357
358         * basic-long.cs: New test case.
359
360 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
361
362         * mini.c (mini_method_compile): Disable globalra for large methods for 
363         now.
364
365         * regalloc2.c (order_moves): Add fp support.
366
367         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
368         source bblock ends with an OP_BR_REG.
369
370         * ratests.cs: Add a new test.
371
372 2008-11-23  Mark Probst  <mark.probst@gmail.com>
373
374         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
375         sharing.  PPC64 now passes generics.exe.
376
377 2008-11-23  Mark Probst  <mark.probst@gmail.com>
378
379         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
380
381 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
382
383         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
384         memory when mono_jit_info_table_find () can't find the method in the
385         LMF case.
386
387         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
388         AOTed code too.
389         
390         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
391         writer too.
392
393 2008-11-23  Mark Probst  <mark.probst@gmail.com>
394
395         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
396         Several fixes.  PPC64 now runs exceptions.exe and
397         devirtualization.exe.
398
399 2008-11-22  Mark Probst  <mark.probst@gmail.com>
400
401         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
402         arrays.exe and basic-math.exe.
403
404 2008-11-22  Mark Probst  <mark.probst@gmail.com>
405
406         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
407         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
408
409 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
410
411         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
412
413 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
414
415         * method-to-ir.c: Move bounds checking macros to ir-emit.h
416
417         * ir-emit.h: Move macros from method-to-ir.c to here.
418
419 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
420
421         * mini-ops.h: Correct the long simd ops to use LREG.
422
423 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
424
425         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
426         
427         * mini-ops.h: Correct the dreg type of a few long opcodes.
428
429         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
430         Add netbsd support.
431
432 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
433
434         * mini-ppc.c: remove negative stack references in epilog
435         for platforms that don't support the red zone.
436
437 2008-11-21  Mark Probst  <mark.probst@gmail.com>
438
439         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
440         point regs.  Now PPC64 passes basic-calls.exe.
441
442 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
443
444         * basic-simd.cs: Add tests for accessors of Vector2l.
445
446 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
447
448         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
449
450         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
451         
452         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
453
454 2008-11-21  Mark Probst  <mark.probst@gmail.com>
455
456         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
457         PPC64 passes basic-long.exe.
458
459 2008-11-20  Mark Probst  <mark.probst@gmail.com>
460
461         * decompose.c: Decompose carry and overflow add on PPC64 like on
462         other 64 bit archs.  Don't decompose sub at all on PPC64.
463
464         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
465         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
466         basic-long.exe.
467
468 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
469
470         * basic-simd.cs: Add tests for accessors of Vector2d.
471
472 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
473
474         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
475
476         * cpu-x86.md: Same.
477
478         * mini-x86.c (mono_arch_output_basic_block): Same.
479         
480         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
481
482 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
483
484         * basic-simd.cs: Add tests for accessors of Vector4f.
485
486 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
487
488         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
489
490         * cpu-x86.md: Same.
491
492         * mini-x86.c (mono_arch_output_basic_block): Same.
493         
494         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
495
496 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
497
498         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
499
500 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
501
502         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
503
504         * cpu-x86.md: Same.
505
506         * mini-x86.c (mono_arch_output_basic_block): Same.
507         
508         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
509
510 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
511
512         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
513
514 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
515
516         * simd-intrinsics.c: Enable setters for Vector16sb.
517
518 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
519
520         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
521
522         * cpu-x86.md: Same.
523
524         * mini-x86.c (mono_arch_output_basic_block): Same.
525         
526         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
527
528 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
529
530         * simd-intrinsics.c: Implement setter for Vector8us.
531
532 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
533
534         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
535         for dead variables.
536
537 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
538
539         * mini-ppc.c: remove references to the red zone in the prolog
540         (for systems that don't support it).
541
542 2008-11-19  Mark Probst  <mark.probst@gmail.com>
543
544         * cpu-ppc64.md: Fixed a few instruction lengths.
545
546         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
547         now.
548
549 2008-11-19  Mark Probst  <mark.probst@gmail.com>
550
551         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
552         basic.exe now.
553
554 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
555
556         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
557
558 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
559
560         * mini-ops.h: Added OP_INSERT_I2.
561
562         * cpu-x86.md: Same.
563
564         * mini-x86.c (mono_arch_output_basic_block): Same.
565         
566         * simd-intrinsics.c: Implement setter for Vector8s.
567
568         * simd-methods.h: Add the names of get setters of Vector8s.
569
570 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
571
572         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
573         
574         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
575         parameters.
576
577         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
578
579 2008-11-18  Mark Probst  <mark.probst@gmail.com>
580
581         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
582         for PPC64.  An empty program runs now.
583
584 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
585
586         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
587
588         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
589         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
590         info for JITted code is emitted into a shared library, loadable into gdb.
591
592 2008-11-18  Mark Probst  <mark.probst@gmail.com>
593
594         * Makefile.am: Changes to build PPC64.
595
596         * mini-arch.h: Include mini-ppc64.h on PPC64.
597
598 2008-11-18  Mark Probst  <mark.probst@gmail.com>
599
600         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
601         in PPC code up to r119147.
602
603 2008-11-18  Mark Probst  <mark.probst@gmail.com>
604
605         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
606         cpu-ppc64.md: Changes for PPC64.
607
608         Based on code submitted by andreas.faerber@web.de at
609         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
610         X11/MIT license.
611
612 2008-11-18  Mark Probst  <mark.probst@gmail.com>
613
614         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
615         cpu-ppc64.md: Copied from the corresponding PPC files from
616         r118846.
617
618 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
619
620         * mini-ops.h: Added OP_ROUND.
621
622         * cpu-x86.md: Added round.
623
624         * mini-x86.c: Added support for intrinsicing Math.Round (double).
625
626         * basic-math.cs: Added test_0_round to test rounding.
627
628         Contributed under MIT/X11 license.
629
630 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
631
632         * aot-compiler.c : Fix the Winx64 build.
633
634         Contributed under MIT/X11 license.
635
636 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
637
638         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
639         in OP_EXTRACT_R8 to avoid possible stack corruption.
640
641 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
642
643         * mini-ops.h: Added OP_EXTRACT_R8/I8.
644
645         * cpu-x86.md: Added extract_r8.
646
647         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
648         
649         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
650         a couple of OP_EXTRACT_I4.
651
652         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
653
654         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
655
656 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
657
658         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
659         and not 4.1. 
660
661 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
662
663         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
664         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
665
666         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
667         are not needed any more.
668
669         * mini.h: Remove the unused INS_LIST macros.
670
671         * mini.c (mini_method_compile): Remove a disable globalra case which is no
672         longer needed.
673
674         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
675         ir-emit.h.
676
677         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
678         mono_alloc_ireg () instead.
679
680         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
681         macros.
682
683         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
684         on amd64.
685
686         * aot-runtime.c (load_aot_module): Disable AOT when running under
687         CAS.
688
689         * mini-amd64.h: Change the monitor fastpath defines to check for
690         !PLATFORM_WIN32 so they work on *bsd too.
691
692         * mini.h mini.c mini-hhpa.c: Remove more unused code.
693
694         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
695
696         * mini.h (MonoCompile): Remove new_ir flag.
697
698         * regalloc.h regalloc.c: Remove unused code.
699
700         * cpu-*.md: Remove more unused opcodes.
701
702         * simple-cee-ops.h simple-mini-ops.h: Removed.
703
704         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
705         
706 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
707
708         * aliasing.h: Removed.
709
710         * *.c: Remove references to aliasing.h and inssel.h.
711
712         * mini.c: Remove additional unused functions.
713
714         * mini-ops.h cpu-*.md: Remove unused opcodes.
715
716 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
717
718         Remove the old JIT code.
719
720         * inssel*.brg: Removed.
721
722         * ssa.c abcremoval.c aliasing.c: Removed.
723
724         * ssa2.c: Renamed to ssa.c.
725
726         * abcremoval2.c: Renamed to abcremoval.c.
727
728         * *.c: Removed all !cfg->new_ir code.
729
730         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
731         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
732
733         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
734         
735 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
736
737         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
738         to simplify the code and cut back on the number of global symbols in the AOT
739         file.
740         
741         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
742
743 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
744
745         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
746         with the got/got_info tables.
747
748         * mini.h: Bump AOT file format version.
749         
750         * unwind.h: New file, contains definitions for stack unwinding.
751
752         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
753         to cfg->unwind_ops.
754         
755         * aot-compiler.c: Generalize the emitting of unwind information to use the
756         information in cfg->unwind_ops.
757
758         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
759
760         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
761         AOT method frames. Enable writing symbols for methods by default.
762
763 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
764
765         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
766         and make it work with vectors of element sizes 1, 2 and 4.
767
768         * simd-intrinsics.c: Enable getter for all vectors with element size
769         1, 2 or 4.
770
771         * simd-methods.h: Add the names of other getters.
772
773         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
774
775         * cpu-x86.md: Same.
776
777         * mini-x86.c: Same.
778
779 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
780
781         * mini-ppc.h: portability fix.
782
783 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
784
785         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
786         buggy and will overwrite it.
787
788 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
789
790         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
791         Use it to emit local symbols for all methods so AOTed methods show up with
792         their full name in gdb/valgrind output.
793
794 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
795
796         * mini-ppc.c: portability fixes.
797
798 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
799
800         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
801         entries out of the if (!generic_shared...) code so it is always done.
802         (mono_class_init_trampoline): Do the patching when running under valgrind
803         too, newer versions of valgrind have no problems with it.
804
805 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
806
807         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
808         further sections.
809
810 2008-11-13  Mark Probst  <mark.probst@gmail.com>
811
812         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
813         filters.
814
815 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
816
817         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
818
819 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
820
821         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
822
823         * cpu-x86.md: Same.
824
825         * mini-x86.c: Same.
826
827         * simd-intrinsics.c: Same.
828
829 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
830
831         * simd-intrinsics.c: Enable constructor intrinsics for all types.
832
833 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
834
835         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
836         to work with more Vector types.
837
838 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
839
840         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
841         store the elemens directly instead of using and intermediate.
842
843 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
844
845         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
846
847         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
848         to preserve %eax for aot plt trampolines.
849
850         * aot-compiler.c (compile_method): Don't skip synchronized methods.
851         (encode_method_ref): Flag synchronized methods so they won't go through
852         the AOT trampoline.
853
854         * aot-compiler.c: Additional work to support AOTing synchronized methods/
855         wrappers.
856
857         * cpu-ia64.md (jmp): Increase max length.
858
859 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
860
861         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
862         open generic classes.
863
864         * aot-compiler.c: Enable the ELF writer on ELF platforms.
865
866         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
867         box+brtrue optimization since it causes test failures on x86.
868
869 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
870
871         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
872
873         * cpu-x86.md: Same.
874
875         * mini-x86.c: Same.
876
877         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
878         for simd ctor values. 
879
880         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
881         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
882
883 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
884
885         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
886         LogicalRightShift.
887
888         * simd-instrincs.c: Same.
889
890         * basic-simd.cs: Same.
891
892 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
893
894         * ratests.cs: Add more tests.
895
896         * regalloc2.c (add_spill_code): Handle more corner cases.
897
898 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
899
900         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
901         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
902         both the source an destination of an instruction.
903
904 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
905
906         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
907         wapihandles.c: more portability changes.
908
909 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
910
911         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
912         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
913         safe to execute in a signal handler and the kernel provides better
914         the info in /proc/self/smaps. Avoid the assert on sigaction during
915         cleanup.
916
917 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
918
919         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
920         do the bblock linking hack if it is actually needed.
921
922         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
923         up linking.
924
925         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
926         crash problem is fixed.
927
928         * branch-opts.c (mono_remove_critical_edges): Link up newly added
929         bblocks.
930
931         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
932         for catch clauses.
933         (mini_method_compile): Set the starting value of next_vreg to 
934         MAX_IREGS + MAX_FREGS when using globalra.
935
936         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
937         filter clauses with BB_EXCEPTION_HANDLER.
938
939         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
940
941 2008-11-10  Mark Probst  <mark.probst@gmail.com>
942
943         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
944         space for stdcall.  Fixes regressions on Win32.
945
946 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
947
948         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
949         bblocks.
950         (linear_scan): Remove an assert which doesn't seem to be needed.
951
952         * local-propagation.c (mono_local_deadce): Avoid a call to
953         MONO_DELETE_INS which would screw up the instruction linking.
954
955         * mini.c (mono_decompose_op_imm): Make this work with globalra.
956
957         * regalloc2.c: Upgrade to work the current JIT code.
958
959 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
960
961         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
962         case.
963
964         * aot-runtime.c: Remove some dead code.
965
966         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
967         consistency.
968         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
969
970         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
971         trampolines using sscanf since atoi doesn't work on large unsigned values.
972
973         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
974         Initialize code_size.
975
976 2008-11-08  Mark Probst  <mark.probst@gmail.com>
977
978         * method-to-ir.c (mini_emit_inst_for_method): Make
979         Interlocked.CompareExchange work for Int arguments on 32 bit
980         archs, as well.
981
982 2008-11-07  Mark Probst  <mark.probst@gmail.com>
983
984         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
985
986 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
987
988         * main.c Fix MSVC build.
989
990         Contributed under MIT/X11 license.
991
992 2008-11-06  Mark Probst  <mark.probst@gmail.com>
993
994         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
995         alignment larger than 8 bytes are aligned correctly, too.
996
997         * mini.c: Honor the min_align field of MonoClass when laying out
998         the stack.
999
1000 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
1001
1002         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
1003
1004         * aot-compiler.c (emit_plt): Fix a warning.
1005         
1006         * aot-compiler.c: Implement ARM support in the binary writer.
1007
1008 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1009
1010         * basic-simd.cs: Add test for getter with byref arg.
1011         Fix the naming of a few tests.
1012         Add missing checks to a test.
1013
1014 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
1015
1016         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
1017
1018         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
1019         most of the full-aot support for monitor enter/exit trampolines.
1020
1021         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
1022         enter/exit trampoline creation functions.
1023
1024         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
1025         make dist.
1026
1027 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
1028
1029         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
1030         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
1031         implement the needed functionality without adding crap to the runtime.
1032
1033 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
1036         non-x86 builds.
1037
1038         * mini.c (mono_build_date): New global version holding the build date in
1039         string format.
1040         
1041         * Makefile.am (buildver.c): Generate a file containing the build date.
1042
1043         * main.c: Set the build date from the generated file.
1044
1045         * mini.c (mono_get_runtime_build_info): New helper function returning build
1046         information in a string format.
1047         
1048         * driver.c (mono_main): Print the build date in --version.
1049
1050         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
1051         file when the bind-to-runtime-version option is used.
1052
1053 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1054
1055         * simd-intrinsics.c: Fix bug when using getters and byref args. 
1056
1057 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1058
1059         * simd-methods.h: Rename prefetch methods.
1060
1061         * simd-intrinsics.c: Same.      
1062
1063 2008-11-05  Mark Probst  <mark.probst@gmail.com>
1064
1065         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
1066         sizes.
1067
1068 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1069
1070         * aot-compiler.c: Use the bundled elf header files instead of depending on
1071         the system one.
1072         
1073         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
1074         mempool.
1075
1076         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
1077         on every call.
1078
1079 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
1080
1081         * cpu-x86.md: Add store nta ops.
1082
1083         * mini-ops.h: Same.
1084
1085         * mini-x86.c: Same.
1086
1087         * mini.h: Add an enum for simd prefetch modes.
1088
1089         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
1090         of store. Use the changed code to support store nta.
1091
1092         * simd-intrinsics.c: Add prefetch ops for all vector types.
1093
1094 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
1097         threads.
1098         
1099         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
1100         names.
1101
1102         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
1103         trampolines.
1104
1105 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1106
1107         * mini-x86.c: Fixed commit.
1108
1109 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1110
1111         * aot-compiler.c (emit_plt): Align the plt section only on x86.
1112
1113 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1114
1115         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
1116         and MONITOR_EXIT, for the ASM fastpaths.
1117
1118         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
1119         available.
1120
1121         * mini.c, patch-info.h: Signature and patch infos for
1122         Monitor.Enter/Exit trampolines.
1123
1124         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
1125
1126         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
1127         Monitor.Enter/Exit ASM fastpath for Linux.
1128
1129 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1130
1131         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
1132
1133         * objects.cs: Add a new test.
1134         
1135         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
1136
1137         * aot-runtime.c (load_method): Run class initialization in the PLT case even
1138         if MONO_LOG_LEVEL is set.
1139
1140         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
1141
1142         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
1143
1144         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
1145         
1146         * aot-compiler.c: Change the relocation code to use virtual addresses instead
1147         of file offsets. Align the sections belonging to the data segment to 
1148         PAGESIZE.
1149
1150 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
1151
1152         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
1153         elf.h. Port it to amd64.
1154
1155 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1156
1157         * driver.c: Enable SIMD by default.
1158
1159 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1160
1161         * cpu-x86.md: Add prefetch op.
1162
1163         * mini-ops.h: Same.
1164
1165         * mini-x86.c: Same.
1166
1167         * mini.h: Add an enum for simd prefetch modes.
1168
1169         * simd-methods.h: Add prefetch function names.
1170
1171         * simd-intrinsics.c: Add prefetch ops for all vector types.
1172
1173 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
1174
1175         * aot-compiler.c (emit_bytes): Speed this up a little.
1176
1177 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
1178
1179         * aot-compiler.c: Add JIT time etc. statistics.
1180         
1181         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
1182
1183         * mini.h (MonoCompile): Add 'got_offset' field.
1184
1185         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
1186         method_got_offsets array.
1187
1188         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
1189         wrappers.
1190
1191         * aot-compiler.c (compile_method): Add generic method instances referenced
1192         by the method to the list of methods to be compiled, this is required so if
1193         A<T> references B<T>, and another assembly references A<int>, then it will
1194         also get a copy of B<int>.
1195
1196         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
1197         when checking for monitor enter/exit.
1198
1199 2008-10-30  Mark Probst  <mark.probst@gmail.com>
1200
1201         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
1202         for Monitor.Enter and Monitor.Exit if enabled.
1203
1204         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
1205         Solaris.
1206
1207 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
1208
1209         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
1210         of an OP_MOVE. Fixes #440046.
1211
1212         * basic-long.cs: Add a new test.
1213
1214 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
1215
1216         * mini.h: Add synchronization note for the managed counter-part.
1217
1218         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
1219         returns the simd caps of the current cpu.
1220
1221 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
1222
1223         * basic-simd.cs: Remove Console.WriteLine.
1224
1225 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1226
1227         * basic-simd.cs: New tests for Vector2ul.
1228
1229 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1230
1231         * simd-intrinsics.c: Add new vector type Vector2ul.
1232
1233 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1234
1235         * basic-simd.cs: New tests for Vector2l.
1236
1237 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1238
1239         * cpu-x86.md: Add long version of most packed int ops.
1240
1241         * mini-ops.h: Same.
1242
1243         * mini-x86.h: Same.
1244
1245         * simd-intrinsics.c: Add new vector type Vector2l.
1246
1247 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1248
1249         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
1250
1251         * simd-methods.h: Remove SN_op_BitwiseXor.
1252
1253 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
1254
1255         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
1256         alignment.
1257
1258 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1259
1260         * basic-simd.cs: Test for Vector2d.
1261
1262         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
1263         value.
1264
1265 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1266
1267         * cpu-x86.md: Add double version of all packed float ops.
1268
1269         * mini-ops.h: Same.
1270
1271         * mini-x86.h: Same.
1272
1273         * simd-intrinsics.c: Add new vector type Vector2d.
1274
1275         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
1276
1277         * simd-methods.h: Add Duplicate.
1278
1279 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1280
1281         * basic-simd.cs: Test for packing with signed saturation.
1282
1283 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
1284
1285         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
1286         found in the TYPESPEC table.
1287
1288 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
1289
1290         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
1291         too.
1292
1293         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
1294
1295         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
1296         instead of the RVA, since the RVA can be changed by tools like the cil 
1297         stripper.
1298
1299         * method-to-ir.c (mono_method_to_ir2): Ditto.
1300
1301         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
1302         (deserialize_variable): Ditto.
1303
1304 2008-10-25  Martin Baulig  <martin@ximian.com>
1305
1306         * debug-mini.c (write_variable): Use
1307         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
1308
1309 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1310
1311         * cpu-x86.md: Add unsigned variants of packd and packw.
1312
1313         * mini-ops.h: Same.
1314
1315         * mini-x86.h: Emit the right instruction for packd and packw.
1316         Add unsigned variants of packd and packw.
1317
1318         * simd-intrinsics.c: Packd and packw were used in place of their
1319         unsigned variants. Change that.
1320         Add intrinsics for (Signed)PackWithSignedSaturation.
1321
1322         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
1323
1324 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1325
1326         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
1327
1328 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1329
1330         * mini-ops.h: Remove dword packed add/sub with saturation ops.
1331
1332         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
1333
1334         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
1335         sse instructions.
1336
1337         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
1338
1339 2008-10-24  Mark Probst  <mark.probst@gmail.com>
1340
1341         * method-to-ir.c, mini.c: Special casing for the synchronized
1342         wrapper for the ldtoken+GetTypeFromHandle case.
1343
1344 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1345
1346         * mini.c (mono_replace_ins): Move this to branch-opts.c.
1347
1348         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
1349         created/split bblocks.
1350
1351 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1352
1353         * mini-ops.h: Add packed signed mul high.
1354         
1355         * cpu-x86.md: Same.
1356
1357         * mini-x86.c (mono_arch_output_basic_block): Same.
1358
1359         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
1360
1361         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
1362
1363 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1364
1365         * basic-simd.cs: Tests for Vector16sb.
1366
1367 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1368
1369         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
1370
1371 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1372
1373         * mini-ops.h: Add packed signed min, max and compare greater.
1374         
1375         * cpu-x86.md: Same.
1376
1377         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
1378         saturation.
1379
1380         * simd-methods.h: Add CompareGreaterThan.
1381
1382         * simd-methods.h: Remove CompareEquals.
1383
1384         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
1385
1386         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
1387
1388         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
1389         CompareEqual.
1390
1391 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1392
1393         * basic-simd.cs: Fix tests due to change in the API.
1394
1395 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1396
1397         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
1398
1399 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1400
1401         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
1402
1403         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
1404         inst_offset as this has invalid values for LDADDR.
1405
1406 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1407
1408         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1409
1410         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
1411
1412 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1413
1414         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
1415         for accessing field->data.
1416
1417 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1418
1419         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1420
1421 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1422
1423         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
1424
1425         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
1426
1427 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1428
1429         * dominators.c (mono_compute_natural_loops): Allocate GList enties
1430         from the cfg mempool.
1431
1432 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1433
1434         * basic-simd.cs: Tests for new methods in Vector8us.
1435
1436 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1437
1438         * mini-ops.h: Add multiply and store high.
1439         
1440         * cpu-x86.md: Same.
1441
1442         * mini-x86.c (mono_arch_output_basic_block): Same.
1443
1444         * simd-methods.h: Same.
1445
1446         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
1447         and CompareEqual.
1448
1449 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1450
1451         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
1452         mono_class_setup_vtable ().
1453
1454         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
1455         mono_class_get_vtable_entry () for accessing klass->vtable.
1456
1457         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
1458
1459         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
1460         found.
1461
1462         * method-to-ir.c (mono_save_token_info): Don't save references made from
1463         wrappers.
1464
1465         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
1466         of generic instances.
1467
1468         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
1469
1470 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1471
1472         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
1473         OP_JMP depends on the method signature.  Calculate it properly.
1474
1475 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1476         
1477         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
1478         called directly.
1479
1480         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
1481         instances.
1482         (emit_extra_methods): Add another table mapping method indexes to 
1483         offsets in the extra_method_info table.
1484
1485         * mini.h: Bump AOT file format version.
1486         
1487         * aot-runtime.c: Merge most of the code from mono_aot_get_method
1488         and mono_aot_get_method_from_token () into one function.
1489
1490 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1491
1492         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
1493         separate counter.
1494
1495 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
1496
1497         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
1498         methods.
1499
1500         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
1501         disable_aot.
1502
1503         * mini.c (mono_patch_info_equal): Compare the generic context as well.
1504
1505         * mini.h: Bump aot file format version.
1506
1507         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
1508         AOT file can contain native code for methods which are not in the METHOD
1509         table. Generate code for non-sharable generic instances of generic methods
1510         found in the METHODSPEC table.
1511         
1512         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
1513         encoding generic type handles.
1514
1515         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
1516         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
1517
1518         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
1519         macros + MONO_ADD_INS.
1520
1521         * mini.c (mono_jump_info_token_new2): New function which takes a generic
1522         context as well.
1523
1524         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
1525
1526         * mini.h: Bump aot file format version.
1527
1528         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
1529
1530 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1531
1532         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
1533         platforms, with definable stack alignment value.  Set to 16 now
1534         for all platforms.
1535
1536         * mini.c, mini.h, driver.c: Command line option for disabling
1537         stack alignment.
1538
1539 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1540
1541         * basic-simd.cs: Tests for new methods in Vector4ui.
1542
1543 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1544
1545         * mini-ops.h: Add packed int shuffle.
1546         
1547         * cpu-x86.md: Same.
1548
1549         * mini-x86.c (mono_arch_output_basic_block): Same.
1550
1551         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
1552         extract mask, max, min, shuffle.
1553
1554         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
1555
1556 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1557
1558         * basic-simd.cs: Tests for new methods in Vector8us.
1559
1560 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1561
1562         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
1563         RuntimeTypeHandle, not a TypedReference.
1564
1565 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
1566
1567         * simd-intrinsics.c: remove relocations.
1568
1569 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
1570
1571         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
1572         optimizations from the x86 backend.
1573
1574 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
1575
1576         * simd-methods.h, simd-intrinsics.c: debloat method names and
1577         prepare for no relocations.
1578
1579 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1580
1581         * mini-ops.h: Add packed min/equal and sum of absolute differences.
1582         
1583         * cpu-x86.md: Same.
1584
1585         * mini-x86.c (mono_arch_output_basic_block): Same.
1586
1587         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
1588         extract mask, max, min and sum of absolute differences.
1589
1590         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
1591         method name.
1592
1593 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1594
1595         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
1596         Renamed one test for consistency.
1597
1598 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1599
1600         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
1601         fix to the code that deal with other blocks.
1602
1603 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1604
1605         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
1606
1607 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1608
1609         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
1610         that deals with vreg interference. Explicitly check for OP_LDADDR to be
1611         able to process the source reg.
1612
1613 2008-10-16  Martin Baulig  <martin@ximian.com>
1614
1615         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
1616
1617         * inssel.brg: Add `OP_HARD_NOP'.
1618
1619         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
1620
1621         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
1622         `OP_HARD_NOP' instruction when running inside the debugger.
1623
1624         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
1625         `OP_HARD_NOP' instruction when running inside the debugger.
1626
1627 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1628
1629         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
1630         now works. The issue with the regalloc tripping up no longer
1631         happens.
1632
1633         * simd-intrinsics.c (load_simd_vreg): Same.
1634
1635 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1636         
1637         * basic-simd.cs: Tests for new Vector8ui methods.
1638
1639 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1640
1641         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
1642         only for type. This fixes crashes where MonoInst::klass is checked
1643         for ops of type != VTYPE or OBJ.
1644
1645         * simd-intrinsics.c (load_simd_vreg): Same.
1646
1647 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1648
1649         * mini-ops.h: Add ops for packed shuffle/max/avg and
1650         extract mask.
1651         
1652         * cpu-x86.md: Same.
1653
1654         * mini-x86.c (mono_arch_output_basic_block): Same.
1655
1656         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
1657         extract mask.
1658
1659         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
1660         to emit extract mask op.
1661
1662         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
1663         to emit word shuffles.
1664
1665 2008-10-15  Mark Probst  <mark.probst@gmail.com>
1666
1667         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
1668         the largest alignment needed by a variable, but at least
1669         sizeof(gpointer).
1670
1671 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1672
1673         * basic-simd.cs: Tests for the fixes in the last commit.
1674
1675 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1676
1677         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
1678         no longer handles STACK_PTR input.
1679
1680         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
1681
1682         * simd-intrinsics.c (load_simd_vreg): New function that works like 
1683         get_simd_vreg   but handles STACK_PTR input.
1684
1685         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
1686         as the input can be an arbitrary pointer.
1687
1688         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
1689         LDADDR local optimization directly otherwise use a store op.
1690
1691 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1692
1693         * basic-simd.cs: Tests for dup low and dup high.
1694
1695 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1696
1697         * mini-ops.h: Add dup low and dup high ops.
1698         
1699         * cpu-x86.md: Same.
1700
1701         * mini-x86.c (mono_arch_output_basic_block): Same.
1702
1703         * simd-intrinsics.c (vector4f_intrinsics): Same.
1704
1705 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1706
1707         * basic-simd.cs: Tests for recently added functionality.
1708
1709 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1710
1711         * mini-ops.h: Add remaining sse1 fp ops.
1712         
1713         * cpu-x86.md: Add remaining sse1 fp ops.
1714
1715         * mini-x86.c (mono_arch_output_basic_block): Same.
1716
1717         * mini.h: Add enum for simd FP compare conditions.
1718
1719         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
1720
1721         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
1722         so the backed can generate the appropriate op.
1723
1724 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1725         This patch squeese one more byte from the SimdIntrinsc struct.
1726
1727         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
1728         a a shift amount intead of simply or'ing it.
1729
1730         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
1731
1732         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
1733         byte so we can have an aditional flags field without increasing struct size.
1734
1735         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
1736         against the simd_supported_versions bitmask.
1737
1738         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
1739
1740 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
1741
1742         * mini.c: remove rawbuffer code (the only use here is unsafe because
1743         it takes locks during signal handling and the kernel now provides much
1744         better info in proc/pid/smaps these days).
1745
1746 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
1747
1748         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
1749         OP_X86_PUSH_OBJ. Fixes #434620.
1750
1751         * objects.cs: Add a test.
1752         
1753 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
1754
1755         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
1756         that the packuswb/packusdw don't work with unsigned numbers for what
1757         would be negative numbers in signed format.
1758
1759         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
1760         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
1761
1762         * mini-ops.h: Add doubleword forms of many ops and packing ones.
1763
1764         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
1765
1766         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
1767
1768         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
1769
1770         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
1771         add more ops.
1772
1773         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
1774         version as the enum in mini.h.
1775
1776         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
1777         for sse3 ops, check the simd_version field if present. This way the code
1778         works with all versions of sse.
1779
1780 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1781
1782         * simd-intrinsics.c: Fixed intrinsic name typo.
1783
1784         * mini.h: Added missing simd exported function.
1785
1786         * basic-simd.cs: Added tests for Vector4ui.
1787         Fixed broken test for Vector16b.
1788
1789 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
1790
1791         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
1792         the max length to 64.
1793
1794 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1795
1796         * method-to-ir.c: Only do the fast virtual generic method call for
1797         non-wrapper methods.
1798
1799         * mini.h, mini-trampolines.c: The new generic virtual remoting
1800         trampoline handles virtual method calls via the vtable (as done by
1801         the fast virtual generic method calls) to remoting proxies.
1802
1803         * mini.c (mono_jit_create_remoting_trampoline): For generic
1804         methods reate a generic virtual remoting trampoline.
1805
1806         * mini-amd64.h: Enable fast virtual generic method calls again.
1807
1808 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1809
1810         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
1811         restore registers when doing tail calls.
1812
1813 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1814
1815         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
1816         Vector4ui.
1817
1818 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1819
1820         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
1821
1822 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1823
1824         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
1825
1826 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1827
1828         * basic-simd.cs: Retrofit for API changes.
1829
1830 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1831
1832         * mini-ppc.c: Handle integer stack arguments for tail calls.
1833
1834 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1835
1836         * optflags-def.h: Removed sse3 optimization.
1837
1838         * driver.c: Same.
1839
1840         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
1841         sse3.
1842
1843         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
1844
1845         * mini.h: Added enumeration with simd versions.
1846
1847         * simd-intrinsics.c (emit_intrinsics): Use the new static var
1848         for detecting SSE3.
1849
1850         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
1851
1852         * mini.c (mini_init): Call mono_simd_intrinsics_init.
1853
1854 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1855
1856         * basic-simd.cs: Added tests for Vector8u and Vector16u.
1857
1858         * basic-simd.cs: Fixed test naming.
1859
1860 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1861
1862         * mini-ops.h: Added ops for packed and saturated math, shifts
1863         and packing/unpacking.
1864
1865         * cpu-x86.md: Added descriptors for the above ops.
1866
1867         * mini-x86.c: Added code to emmit the above ops.
1868
1869         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
1870
1871 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
1872
1873         * aot-compiler.c (compile_method): Enable AOT for generic code.
1874
1875         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
1876
1877 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
1878
1879         * mini.c: add a workaround for a common screwup that ends up blamed
1880         to mono (other processes blocking signal delivery).
1881
1882 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1883
1884         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
1885         in the LDFLD/STFLD opcodes. Fixes #432673.
1886
1887         * iltests.il.in: Add a new test.
1888
1889 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
1890
1891         * mini-arm.c: attach the thread in unmanaged->managed transitions
1892         using delegates (bug #433148).
1893
1894 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1895
1896        * basic-simd.cs: Use new ShuffleSel constants.
1897
1898 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1899
1900         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
1901
1902         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
1903         only disable simd intrinsics if no sse2 is detected.
1904
1905         * optflags-def.h: Added sse3.
1906
1907         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
1908         is disabled.
1909
1910 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1911
1912         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
1913         when adding delegate-invoke wrappers.
1914
1915 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1916
1917         * Makefile.am: Reenable the simd tests.
1918
1919 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
1920
1921         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
1922           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
1923           other vreg is allocated to that hreg.
1924
1925         Contributed under MIT/X11 license.
1926
1927 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1928
1929         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
1930         yet checked in.
1931
1932 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1933
1934         * basic-simd.cs: New test suite for SIMD intrinsics.
1935
1936         * Makefile.am: Added new tests.
1937
1938 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1939
1940         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
1941
1942         * mini-ops.h: Same.
1943
1944         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
1945
1946         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
1947         using SSE2 aware opcodes.
1948
1949         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
1950         is enabled, this code path is only reachable if conversion ops are emmited after
1951         mono_method_to_ir.
1952
1953         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
1954
1955         This optimization saves 6 bytes per conversion against the old version.
1956
1957 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1958
1959         * aot-compiler.c (compile_method): Don't skip methods referencing 
1960         generic methods without a corresponding entry in token_info_hash, since
1961         encode_method_ref () can handle all generic methods now.
1962
1963         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
1964         generic context is set.
1965         
1966         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
1967         generic sharing of LDTOKEN.
1968
1969 2008-10-06  Mark Probst  <mark.probst@gmail.com>
1970
1971         * mini-amd64.h: Temporarily disabled fast virtual generic method
1972         calls because it breaks the System.Runtime.Remoting tests.
1973
1974 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1975
1976         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
1977
1978         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
1979         so inlining actually works.
1980         (check_inline_caller_method_name_limit): Ditto.
1981
1982 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
1983
1984         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
1985         64 bit safety (from Olaf Hering and Andreas Färber).
1986
1987 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1988         
1989         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
1990         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
1991         unused virtual call support code.
1992
1993         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
1994         
1995         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
1996         which can't use aot trampolines.
1997         (decode_patch): Don't create aot trampolines for methods which can't use
1998         them.
1999
2000         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
2001         use aot trampolines.
2002
2003         * mini.h: Bump AOT image format version.
2004         
2005 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
2006
2007         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
2008         to save_token_info () since cmethod is inflated for constrained calls.
2009
2010         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
2011
2012 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
2013
2014         * Makefile.am: Add build rules for ppc64.
2015         This avoids the build failing at pedump with unresolved symbols
2016         due to lack of arch_sources. Instead it will now fail earlier
2017         due to lack of cpu-ppc64.md.
2018
2019         Contributed under MIT/X11 license.
2020
2021 2008-10-04  Mark Probst  <mark.probst@gmail.com>
2022
2023         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
2024         tail calls.
2025
2026         * iltests.il.in: Add test case for tail call with many arguments.
2027
2028 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
2029
2030         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
2031         to the fast virtual generic method code until the aot case is fixed.
2032
2033 2008-10-03  Mark Probst  <mark.probst@gmail.com>
2034
2035         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
2036
2037 2008-10-03  Mark Probst  <mark.probst@gmail.com>
2038
2039         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
2040         thunks.
2041
2042 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
2043         
2044         * simd-intrinsics.c: Forgot to add this one.
2045
2046         * mini-codegen.c: Fix macro in case SIMD is not supported.
2047
2048 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
2049         
2050         This patch land initial JIT support for simd intrinsics.
2051
2052         * mini-x86.h: Added new define to make --enable_minimal work on x86.
2053
2054         * Makefile.am: Added simd-intrinsics.c
2055
2056         * simd-intrinsics.c: New file with simd instrinsic related
2057         code.
2058
2059         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
2060
2061         * cpu-x86.md: Add simd related instructions.
2062
2063         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
2064
2065         * driver.c: Added two new --regression variants.
2066
2067         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
2068
2069         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
2070
2071         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
2072         extract some complicated logic to helper functions.
2073
2074         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
2075
2076         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
2077
2078         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
2079         the specialized simplification pass.
2080
2081         * method-to-ir.c (mono_spill_global_vars): Use new macro.
2082
2083         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
2084
2085         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
2086         table.
2087
2088         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
2089         if MONO_ARCH_NEED_SIMD_BANK is defined.
2090
2091         * mini-ops.h: Added the new simd ops.
2092
2093         * mini-x86.c: Added mono_arch_xregname.
2094
2095         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
2096
2097         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
2098
2099         * mini-x86.h: Define simd related MONO_ARCH macros.
2100
2101         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
2102
2103         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
2104
2105         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
2106         MONO_CLASS_IS_SIMD to deal with simd related IR.
2107
2108         * mini.h (MonoInst): Added spill_var to the backend union.
2109
2110         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
2111
2112         * mini.h: Added forward declarations of the new simd fuctions.
2113
2114         * optflags-def.h: Added new optimization names SIMD.
2115
2116         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
2117
2118         * regalloc.h: Added support for working with 3 register banks.
2119
2120         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
2121
2122         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
2123
2124 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
2125
2126         * mini-exceptions.c: remove 64 bit related ifdef clutter.
2127
2128 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
2129
2130         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
2131         instead of one on 64 bit systems.
2132
2133         * method-to-ir.c: Remove unused includes.
2134
2135 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
2136
2137         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
2138         cfg->used_int_regs, since the two are different on arm.
2139
2140 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2141
2142         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
2143         mono_method_get_vtable_index() to get the vtable index.
2144
2145 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2146
2147         * method-to-ir.c (mono_method_to_ir2): Don't create native
2148         wrappers for array methods, because they're never called (and if
2149         they were called they wouldn't work).
2150
2151 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2152
2153         * method-to-ir.c (mono_method_to_ir2): Array methods are
2154         special-cased and must not be invoked indirectly via the (M)RGCTX
2155         when generic sharing is turned on.  Fixes #431413.
2156
2157 2008-10-01  Mark Probst  <mark.probst@gmail.com>
2158
2159         * method-to-ir.c: When generic sharing is active, call
2160         non-interface virtual generic methods via the standard trampoline.
2161
2162         * mini-trampolines.c: Handle virtual generic shared methods.
2163
2164         * mini.h, mini-x86.c, mini-x86.h: New argument for
2165         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
2166         method thunks and which is the trampoline to call if the lookup
2167         fails.  Enable the virtual generic method thunk for x86.
2168
2169         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
2170         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
2171         argument but assert that it's NULL, because these archs don't yet
2172         implement the virtual generic method thunk.  Changes in the IMT
2173         thunk data structures.
2174
2175 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * aot-compiler.c (emit_globals): Avoid invalid characters in
2178         the static linking symbol.
2179
2180         * objects.cs: Add a test for the range check optimization. Fix warnings.
2181
2182         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
2183         optimization from the current JIT.
2184
2185         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
2186         later in decompose_array_access_opts () to allow more optimizations.
2187
2188         * method-to-ir.c (mono_handle_soft_float): Rename this to 
2189         mono_decompose_soft_float () for consistency.
2190
2191         * mini-ops.h: Fix arguments of OP_STRLEN.
2192
2193         * method-to-ir.c (save_cast_details): Extract the cast details saving code
2194         into a separate function.
2195         (reset_cast_details): Ditto.
2196         (handle_unbox): Save cast details. Fixes #431254.
2197
2198         * method-to-ir.c: Remove some obsolete FIXMEs.
2199
2200 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2201
2202         * ir-emit.h (alloc_dreg): Write a warning before crashing.
2203
2204 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2205
2206         * mini-codegen.c: More work on macros to make them
2207         ready for multiple regbanks.
2208
2209 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2210
2211         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
2212
2213         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
2214
2215 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2216
2217         * mini-codegen.c (mono_spillvar_offset): Proper support for
2218         multiple regbanks.
2219
2220 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
2221
2222         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
2223         the stack overflow changes.
2224
2225 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2226
2227         * mini-codegen.c: Make all bank macros depend on reg_bank.
2228
2229         * mini-codegen.c (mono_local_regalloc): Make free mask
2230         initialization regbank aware.
2231
2232 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2233
2234         * mini-codegen.c (mono_local_regalloc): Extract callee
2235         mask selection to a function and make it regbank aware.
2236
2237 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2238
2239         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
2240         code to deal with many regbanks.
2241
2242 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
2243
2244         * mini-codegen.c: More fp->regbank changes.
2245
2246 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
2247
2248         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
2249         of a hardcoded constant.
2250
2251 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
2252
2253         * method-to-ir.c (type_from_stack_type): Fix typo.
2254
2255 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
2256
2257         * mini-ia64.c (emit_move_return_value): Convert float return values to
2258         double.
2259
2260         * objects.cs: Add a new test.
2261         
2262         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
2263         VARARG methods to fix an assert later.
2264
2265         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
2266         end so it at least compiles.
2267
2268 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
2269
2270         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
2271
2272 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
2273
2274         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
2275         optimization to a new function (emit_optimized_ldloca_ir) and enable
2276         it for both ldloca and ldloca_s.
2277
2278 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
2281         gshared CASTCLASS code.
2282
2283         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
2284         amd64, where the libc stack unwinder encounters stack frames referring to
2285         native code in unmapped memory.
2286
2287         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
2288         sharing.
2289
2290         * generics.cs: Add new test.
2291
2292 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
2293
2294         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
2295         add a check that one of the ARM_FPU_ constants is defined.
2296
2297         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
2298         
2299         * mini-exceptions.c: Fix build on non-altstack platforms.
2300
2301         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
2302         sharing of vtypes.
2303
2304         * ir-emit.h: Add a comment to NEW_PCONST.
2305
2306         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
2307
2308         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
2309
2310         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
2311         after the changes to MonoJitDomainInfo.
2312
2313 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2314
2315         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
2316
2317 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2318
2319         * mini-ppc.c: Compiler warning fixes.
2320
2321 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2322
2323         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
2324         for pinvokes.
2325
2326 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2327
2328         * exceptions-ppc.c, mini-ppc.h: Compile
2329         mono_arch_handle_altstack_exception() on Darwin, too.
2330
2331 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2332
2333         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
2334         work on archs which don't have generic sharing implemented, only
2335         without the vtable_arg.
2336
2337 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2338
2339         * mini.c: Added comment explaining why delegate ctor icall
2340         wrappers are compiled.
2341
2342 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2343
2344         * mini.c: Don't produce trampolines to delegate ctor icall
2345         wrappers but compile them upfront.
2346
2347 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
2348
2349         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
2350         runtime-set function when going back to managed code. Currently this
2351         is used to set back the protection on the soft ovf pages and/or to
2352         throw the stack overflow exception that happened in unmanaged code.
2353
2354 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
2355
2356         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
2357         runtime-set function when going back to managed code. Currently this
2358         is used to set back the protection on the soft ovf pages and/or to
2359         throw the stack overflow exception that happened in unmanaged code.
2360
2361 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
2362
2363         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
2364         the support code for restoring stack protection after stack overflows
2365         that happen in unmanaged code. Don't set the exec permission on the
2366         soft overflow area.
2367
2368 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
2369
2370         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
2371         delegate->method_ptr is set. Fixes #428054.
2372
2373 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2374
2375         * tests.cs: Rename to ratests.cs.
2376
2377         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
2378         emit_get_rgctx_... functions.
2379
2380 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2381
2382         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
2383
2384 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2385
2386         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
2387         before asserting that method is sharable.
2388
2389 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2390
2391         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
2392         whether method needs a static RGCTX wrapper used instead of
2393         complex conditions.
2394
2395         * generic-sharing.c, mini.h: A few functions moved to
2396         metadata/generic-sharing.c.
2397
2398 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2399
2400         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
2401         Generic code sharing for value types, which essentially means
2402         treating value type methods like static methods.  The RGCTX is
2403         passed in the same way.
2404
2405 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2406
2407         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
2408         opcode when creating multi-dimensional arrays of open types.
2409
2410         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
2411         open generic types.
2412
2413         * generics.cs: Add a test.
2414
2415         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
2416
2417 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2418
2419         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
2420
2421         * mini.c (mini_method_compile): Set it when running under the debugger. 
2422
2423         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
2424         vreg optimization if the flag is set.
2425
2426         * driver.c (mono_main): Add --attach= option to pass options to
2427         the attach agent.
2428
2429         * mini.c (sigquit_signal_handler): Start the attach agent.
2430
2431         * ssapre.c: Disable this to save space since it is not yet ported to
2432         linear IR.
2433
2434         * regalloc2.c: Disable this to save space.
2435
2436         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
2437
2438 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
2439
2440         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
2441         the -v option useful again.
2442
2443 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2444
2445         * mini-amd64.c (mono_arch_output_basic_block): Add support for
2446         --break-at-bb.
2447
2448         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
2449         arrays of arrays. Fixes #428406.
2450
2451         * method-to-ir.c (mini_emit_castclass): Ditto.
2452
2453         * objects.cs: Add new test.
2454         
2455 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
2456
2457         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
2458         was wrong at it choked against target_type_is_incompatible for byref types.
2459
2460 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2461
2462         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
2463         places.
2464
2465 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
2466
2467         * mini-exceptions.c: update a few more exceptions-related counters.
2468
2469 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
2470
2471         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
2472         new functions to allocate from persistent mempools.
2473
2474 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2475
2476         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
2477         multiple register banks in the future.
2478
2479         * mini-codegen.c (mono_local_regalloc): Fix a warning.
2480
2481 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
2482
2483         * mini.c (type_to_eval_stack_type): Remove duplicated function.
2484
2485         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
2486
2487         * mini.h: Export type_to_eval_stack_type.
2488
2489         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
2490         is only ins->klass of byref types.
2491
2492 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
2493
2494         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
2495         (mini_emit_memcpy2): Ditto.
2496
2497         * mini-amd64.c: Fix a warning.
2498
2499 2008-09-21  Mark Probst  <mark.probst@gmail.com>
2500
2501         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
2502         linking.
2503
2504 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
2505
2506         * method-to-ir.c: Extract stloc micro-optimization to a
2507         function and apply it to all cases.
2508
2509 2008-09-19  Mark Probst  <mark.probst@gmail.com>
2510
2511         * method-to-ir.c: Don't fail generic code sharing in cases we
2512         already support.
2513
2514 2008-09-18  Mark Probst  <mark.probst@gmail.com>
2515
2516         * mini-ppc.c: Handle structs in tailcalls on Darwin.
2517
2518 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
2519
2520         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
2521         implementation.
2522
2523 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
2524
2525         * trace.c: make tracing more useful and correct, with per-thread
2526         id and indent info.
2527
2528 2008-09-15  Mark Probst  <mark.probst@gmail.com>
2529
2530         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
2531         doing a method call and the argument is an R4.
2532
2533 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
2534
2535         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
2536         generic methods.
2537
2538 2008-09-13  Mark Probst  <mark.probst@gmail.com>
2539
2540         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
2541
2542 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
2543
2544         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
2545         (MONO_JUMP_TABLE_FROM_INS): Ditto.
2546
2547 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2548
2549         * driver.c: Add a --agent argument (not supported yet) to load managed
2550         agent assemblies before loading the main assembly, similarly to how the
2551         Java VM handles agents.
2552
2553 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2554
2555         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
2556         function to do stack layout of local variables.
2557
2558 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2559
2560         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
2561         calculation.
2562
2563 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2564
2565         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
2566         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
2567         JIT if DISABLE_JIT is defined.
2568
2569         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
2570         defined.
2571
2572 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2573
2574         * iltests.il.in: Disable the fconv test on PPC (the result is
2575         undefined according to ECMA).
2576
2577 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2578
2579         * iltests.il.in: Enable tail call tests for PPC.
2580
2581         * mini.h: Add variable for storing incoming valuetype argument
2582         addresses for tail calls.
2583
2584         * mini-ppc.c: Implement valuetype arguments and return values for
2585         tailcalls on Linux.
2586
2587 2008-09-09  Mark Probst  <mark.probst@gmail.com>
2588
2589         * mini-ppc.c: Partially implement tail calls (struct arguments and
2590         return values not supported).
2591
2592         * method-to-ir.c: Enable tail calls on PPC.
2593
2594 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
2595
2596         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
2597         runtime-invoke wrappers to work around the problem of them getting
2598         assigned to a random class.
2599
2600         * aot-runtime.c (mono_aot_get_method): Ditto.
2601         
2602 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
2603
2604         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
2605         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
2606
2607 2008-09-07  Mark Probst  <mark.probst@gmail.com>
2608
2609         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
2610         until they're implemented properly.
2611
2612         * exceptions-ppc.c: Use arch-independent exception-handling code
2613         instead of custom one.
2614
2615         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
2616         for Linear IR.
2617
2618         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
2619
2620         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
2621         applies when __powerpc__ is defined.
2622
2623 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
2624
2625         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
2626         methods to their code to avoid computing the full name of wrappers and
2627         doing a lookup in a string hash table.
2628
2629 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2630
2631         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
2632         we identify bblocks before method_to_ir () is ran.
2633
2634         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
2635         Also avoid optimizing branches pointing to themselves.
2636
2637         * mini.c (mini_method_compile): Ditto. Fixes #422947.
2638
2639 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2640
2641         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
2642
2643 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2644
2645         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
2646         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
2647         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
2648         'buf'.
2649
2650         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
2651         jumped to the same entry in plt_jump_table.
2652
2653 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
2654
2655         * method-to-ir.c (initialize_array_data): Handle field with RVA from
2656         dynamic images.
2657
2658 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
2659
2660         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
2661         other assignment can be if converted. Saves 1.5% on corlib size and fixes
2662         #421807.
2663
2664 2008-08-29  Geoff Norton  <gnorton@novell.com>
2665
2666         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
2667         segment, and doesn't properly handle .space as .text.  Fixes
2668         AOT Mach/ARM
2669
2670 2008-08-29  Geoff Norton  <gnorton@novell.com>
2671
2672         * mini.c: Disable the mach exception handler when running on 
2673         ARM
2674
2675 2008-08-29  Geoff Norton  <gnorton@novell.com>
2676
2677         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
2678         globals on Darwin/ARM
2679
2680 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
2681
2682         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
2683         since too many things depend on it. Instead, call 
2684         mono_runtime_set_no_exec ().
2685         
2686         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
2687         the new JIT.
2688
2689         * aot-compiler.c: Add an 'asm-only' AOT option.
2690
2691         * mini.c: Avoid initializing the runtime when doing AOT compilation.
2692                 
2693         * aot-compiler.c (compile_method): Disable gshared support for now as it
2694         doesn't yet work.
2695
2696 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2697
2698         * mini-amd64.h : Fix a compiler warning.
2699
2700         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
2701           Changed to use a callback function to retrieve the unwind info.
2702           This avoids problems observed when code blocks were removed by
2703           unloading an app domain.
2704
2705         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
2706           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
2707           to work properly.
2708
2709         Contributed under MIT/X11 license.
2710
2711 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2712
2713         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
2714           case to keep the stack aligned to 8.
2715
2716         Contributed under MIT/X11 license.
2717
2718 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
2719
2720         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
2721         avoid repeated linear searches.
2722
2723 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
2724
2725         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
2726         methods it can't handle.
2727         
2728         * aot-compiler.c (add_method): Avoid adding a method twice.
2729         (add_wrappers): Add runtime invoke wrappers for all methods.
2730
2731         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
2732         function to create an aot-compatible version of this trampoline.
2733
2734         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
2735
2736 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
2737
2738         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
2739
2740         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
2741         with a generic sharing failure.
2742
2743         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
2744
2745         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
2746         CEE_RETHROW. Fixes #419634.
2747
2748         * mini.c (mono_method_to_ir): Ditto.
2749
2750         * exceptions.cs: Add a new test.
2751         
2752         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
2753         to mono_type_stack_size_internal () since some callers might not pass in
2754         an rgctx.
2755
2756         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
2757         instrument_prolog. Fixes #419878.
2758
2759         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
2760         doubles in soft float mode volatile.
2761
2762 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
2763
2764         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
2765
2766         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
2767         to handle soft float correctly.
2768
2769         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
2770         the fast path.
2771
2772         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
2773
2774         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
2775         to sp, since the generics catch code requires it.
2776
2777         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
2778         copying.
2779
2780         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
2781         mono_arch_emit_imt_argument ().
2782
2783         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
2784
2785         * mini-arm.c tramp-arm.c: Generic sharing updates.
2786
2787 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
2788
2789         * mini-arm.c: Fix the arm build.
2790
2791         * generic-sharing.c (mini_type_get_underlying_type): New helper function
2792         handling enums, generic instances and generic sharing.
2793         (mini_type_stack_size_full): Ditto.
2794
2795         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
2796         
2797         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
2798
2799         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
2800
2801         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
2802         trampolines.
2803
2804         * mini-arm.c: Various small generic sharing changes.
2805
2806         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
2807         this for x86.
2808         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
2809         custom code.
2810
2811         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
2812         helper function to return a generic class init trampoline.
2813
2814         * method-to-ir.c mini.c: Use it.
2815         
2816         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
2817         arch-specfic function to return a generic class init trampoline.
2818
2819         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
2820         the GENERIC_CLASS_INIT custom code.
2821
2822         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
2823         a fatal error, not a sharing failure.
2824
2825         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
2826         needed.
2827
2828         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
2829         trampoline argument from MONO_ARCH_VTABLE_REG.
2830
2831         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2832         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2833         argument, and pass the vtable in VTABLE_REG.
2834
2835         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2836         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2837         argument, and pass the vtable in VTABLE_REG.
2838         (mono_arch_create_trampoline_code_full): Remove some special casing for
2839         the rgctx fetch trampoline.
2840
2841         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
2842         Fixes #419273.
2843
2844         * iltests.il: Add a test for it.
2845
2846 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
2847
2848         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
2849
2850         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
2851         no longer needed.
2852
2853         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
2854         use mono_jit_info_table_find () to avoid recursion.
2855         (mono_delegate_trampoline): Add a sync wrapper here.
2856
2857         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
2858         here.
2859
2860         * mini.c (mono_method_to_ir): Ditto.
2861         
2862         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
2863         add_sync_wrapper argument. Don't add a sync wrapper here.
2864         (mono_create_jump_trampoline): Don't add a sync wrapper here.
2865
2866         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
2867         
2868 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2869
2870         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
2871           of nonvolatile registers back from MonoContext to CONTEXT.
2872
2873         Contributed under MIT/X11 license.
2874
2875 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2876
2877         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
2878           arguments on Winx64 there are only 4 argument registers.  For this
2879           logic to work the last argument must be pulled from the stack.  
2880
2881         Contributed under MIT/X11 license.
2882
2883 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
2884
2885         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2886
2887         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
2888         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
2889         encode/decode_method_ref ().
2890
2891         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
2892
2893         * aot-runtime.c (decode_patch): Ditto.  
2894
2895         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
2896         MONO_PATCH_INFO_METHOD.
2897
2898         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
2899         MonoGenericJitInfo.
2900
2901         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
2902         MonoGenericJitInfo.
2903
2904         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
2905
2906         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
2907         one from the caller.
2908
2909         * aot-runtime.c (decode_generic_inst): New function to decode and
2910         return a interned generic inst.
2911         (decode_klass_ref): Use it.
2912         (decode_method_ref): Ditto.
2913
2914         * aot-compiler.c (emit_exception_debug_info): Save 
2915         jinfo->has_generic_jit_info too.
2916
2917 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2918
2919         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
2920
2921         * iltests.il.in: Add a test for fconv_to_i.
2922
2923         * liveness.c: Disable the liveness2 pass for now to save space.
2924
2925         * regalloc2.c: Include mempool-internals.h to fix warnings.
2926
2927         * aot-compiler.c (encode_method_ref): Encode the context of generic
2928         instance methods.
2929
2930         * aot-runtime.c (decode_method_ref): Inflate generic methods using
2931         the context saved in the aot file.
2932
2933         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2934
2935         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2936
2937         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
2938         volatile so they won't be optimized away.
2939
2940 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2941
2942         * ssa.c:
2943         * ssa2.c:
2944         * mini.c:
2945         * regalloc2.c:
2946         * dominators.c: Remove duplicated functions that now are in
2947         mempool-internals.h.
2948
2949 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2950
2951         * aot-compiler.c: Fix warnings.
2952
2953         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
2954
2955         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
2956
2957         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
2958         as the patch type.
2959
2960         * mini.c (mono_resolve_patch_target): Ditto.
2961         
2962         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
2963         (encode_klass_ref): Add support for encoding VARs/MVARs.
2964
2965         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
2966
2967         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
2968         the handling of the got entries into a separate 'decode_got_entry' function.
2969         Add support for RGCTX_FETCH.
2970
2971         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
2972         clobbered by the trampoline code.
2973
2974         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
2975         not clobbered by the indirect calling code.
2976
2977 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2978
2979         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
2980         to fix the build.
2981
2982 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2983
2984         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
2985         signature using the compilation mempool otherwise we would leak it.
2986
2987 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2988
2989         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
2990         mono_emit_abs_call ().
2991
2992         * patch-info.h: Add GENERIC_CLASS_INIT.
2993
2994         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
2995
2996         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
2997         as their target as a near call.
2998
2999         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
3000         ABS handling code.
3001         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
3002
3003         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
3004         call to a runtime function described by a patch.
3005
3006         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
3007         mono_emit_abs_call, this has the advantage that the ABS handling code in
3008         mono_codegen () can handle them both, and can handle other stuff in the
3009         future without additional code.
3010
3011         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
3012         entry.
3013         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
3014         abs addresses.
3015
3016         * mini.h: Add missing bblock related prototypes.
3017
3018         * mini.h (MonoCompile): Remove unused reverse_inst_list and
3019         reverse_inst_list_len fields.
3020
3021         * mini.c: Refactor this file a bit by moving branch optimizations to 
3022         branch-opts.c.
3023
3024         * method-to-ir.c: Merge generic sharing changes missed earlier.
3025
3026         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
3027
3028         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
3029         shared patches. Process METHODCONST as a shared patch.
3030
3031         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
3032         as it crashes on the 2.0 mscorlib.
3033
3034         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
3035         to cause crashes.
3036         
3037         * aot-compiler.c: Use is_plt_patch () in a few additional places.
3038         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
3039         by IMT.
3040
3041         * aot-compiler.c: Reorganize the got handling code to be a bit more
3042         understandable.
3043
3044 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
3045
3046         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
3047         mono_patch_info_equals/hash, and use it to massively simplify
3048         get_plt_index ().
3049
3050         * mini.c (mono_patch_info_hash): Simplify this and add support for
3051         more patch types.
3052
3053         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
3054
3055         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
3056         handling code, since an offset is not enough to identify a trampoline.
3057
3058         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
3059
3060 2008-08-17  Mark Probst  <mark.probst@gmail.com>
3061
3062         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
3063
3064         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
3065
3066         * mini-ops.h: Argument and result types for OVF_CARRY ops.
3067
3068         * decompose.c: PPC decompositions for various ops.
3069
3070         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
3071
3072 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
3073
3074         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
3075         call the generic trampoline code using a call, instead of a jump, to
3076         remove some special casing from the generic trampoline code.
3077
3078         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
3079         (mono_codegen): Ditto.
3080
3081         * aot-compiler.c aot-runtime.c: Ditto.
3082
3083         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
3084
3085         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
3086         helper function to find the offset corresponding to a lazy fetch trampoline.
3087
3088         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
3089         when doing generic sharing.
3090
3091         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
3092         places.
3093         
3094         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
3095         mini-trampolines.c to be with the other trampoline creation functions.
3096
3097         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
3098         as it is equal to method->signature in most cases, add a 
3099         mono_emit_method_call_full variant which takes a signature and an imt
3100         argument as well.
3101
3102 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
3103
3104         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
3105         to this function, since it could be computed easily from the method 
3106         argument.
3107         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
3108         more.
3109
3110         * method-to-ir.c mini.c: Remove references to 
3111         compile_generic_method_wo_context.
3112
3113         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
3114         generic method calls.
3115         
3116         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
3117         dimensional non-szarrays.
3118
3119         * mini.c (mini_init): Register mono_array_new_1.
3120
3121         * jit-icalls.c (mono_array_new_1): New jit icall.
3122
3123         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
3124         pointing to the method.
3125
3126         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
3127         method addresses belonging to METHOD_JUMP patches in the 
3128         jump_target_got_slot_hash.
3129         (mono_aot_load_method): Ditto.
3130
3131         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
3132         METHOD_JUMP patches.
3133
3134         * mini.c (mini_create_jit_domain_info): New helper function which 
3135         initializes/frees domain->runtime_info.
3136         (mini_free_jit_domain_info): Ditto.
3137         (mini_init): Install the domain hook functions with the runtime.
3138
3139         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
3140         information maintained by the JIT.
3141
3142         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
3143         insertion into jump_table_hash into mono_codegen (), also implement proper
3144         locking.
3145
3146         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
3147         tail calls, it is already done by the aot code.
3148         
3149         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
3150         mechanism on amd64.
3151
3152         * iltests.il.in: Make the jmp test a bit more complex.
3153
3154         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
3155         generic instances which doesn't have a token.
3156
3157         * aot-runtime.c (decode_method_ref): Ditto.
3158         
3159         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
3160         can handle this case now.
3161         (handle_box): Ditto.
3162
3163 2008-08-15  Geoff Norton  <gnorton@novell.com>
3164
3165         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
3166         debugging check.
3167
3168 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
3169
3170         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
3171         calling generic methods.
3172
3173         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
3174
3175         * aot-runtime.c (decode_patch_info): Ditto.
3176
3177         * mini.c (mono_resolve_patch_target): Ditto.
3178         
3179         * patch-info.h: Add METHOD_RGCTX.
3180
3181         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
3182
3183 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
3184
3185         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
3186         arguments in registers.
3187
3188         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
3189         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
3190
3191         * mini.c (mini_method_compile): Abort aot compilation for generic
3192         methods if generic sharing is disabled.
3193         
3194         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
3195         an mrgctx.
3196
3197         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
3198         requiring an mrgctx.
3199
3200         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
3201         store instructions when converting a vcall to a normal call.
3202
3203         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
3204         mono_arch_find_jit_info.
3205
3206 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
3207
3208         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
3209         avoid calling mono_method_full_name () for every method even if the
3210         env var is not set.
3211         (check_inline_caller_method_name_limit): Ditto.
3212
3213 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
3214
3215         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
3216         assemblies in one run.
3217
3218         * aot-compiler.c (mono_compile_assembly): Only print out a count of
3219         skipped methods if it is not 0.
3220
3221         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
3222
3223 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
3224
3225         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
3226           MONO_ARCH_HAVE_UNWIND_TABLE.
3227
3228         Contributed under MIT/X11 license.
3229
3230 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
3231
3232         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
3233           from default optimizaton list on Winx64.
3234
3235         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
3236
3237         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
3238           the LMF from the MonoJitTlsData structure.
3239
3240         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
3241
3242         Contributed under MIT/X11 license.
3243
3244 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
3245
3246         * mini.c (sigsegv_signal_handler): Fix the build.
3247
3248         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
3249         assembly->aot_module.
3250
3251         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
3252         hash table. This simplifies and speeds up a lot of code, and fixes support
3253         for .netmodules.
3254
3255         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
3256         with the runtime.
3257
3258         * mini-exceptions.c: Ditto.
3259         
3260         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
3261         'native_offset' argument, since these are computed in the 
3262         mono_find_jit_info () function.
3263
3264         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
3265         is used by exceptions-ppc.c.
3266
3267         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
3268         mono_arch_find_jit_info ().
3269         
3270         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
3271         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
3272         generic code in mini-exceptions.c.
3273
3274 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
3275
3276         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
3277
3278         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
3279         
3280         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
3281         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
3282         called while holding the loader lock. Fixes #415608.
3283         (mono_aot_get_method_from_token_inner): Ditto.
3284
3285 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3286
3287         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
3288         to reduce differences between this and the generic implementation in
3289         mini-exceptions.c.
3290         (ves_icall_get_frame_info): Ditto.
3291
3292         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
3293
3294         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
3295         longer neccesarry.
3296
3297         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
3298         mono_arch_get_call_filter () and make it non-static, for consistency with the
3299         other architectures.
3300
3301 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
3302
3303         * mini.c:
3304         * local-propagation.c:
3305         * mini-x86.c: Correct the name of arch defines.
3306
3307 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3308
3309         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
3310         NO_EMULATE_LONG_SHIFT_OPS define.
3311
3312 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
3313
3314         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
3315         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
3316
3317         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
3318         MACH fixes. Merged from the 2.0 branch.
3319
3320         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
3321
3322         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
3323         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
3324
3325         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
3326
3327         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
3328         mono_marshal_get_native_wrapper () signature changes.
3329
3330 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3331
3332         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
3333         conversion bug under arm.
3334
3335 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
3336
3337         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
3338
3339         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
3340         with overflow checking.
3341
3342 2008-08-05  Marek Habersack  <mhabersack@novell.com>
3343
3344         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
3345         to the genmdesc.pl file
3346
3347 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
3348
3349         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
3350         arg_array in the soft-float versions of the LOAD/STORE macros.
3351
3352         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
3353         implementation.
3354
3355         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
3356
3357 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3358
3359         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
3360         a float HFA. Fixes #413621.
3361
3362 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
3363
3364         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
3365         frame_size to args_size. Fixes build.
3366
3367 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3368
3369         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
3370         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
3371
3372         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
3373         the stack are not unaligned. Fixes #413247.
3374         
3375 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3376
3377         * mini.c: update jitted methods performance counters.
3378
3379 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
3380
3381         * mini-exceptions.c: increase the exceptions thrown performance
3382         counter in mono_handle_exception ().
3383
3384 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
3385
3386         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
3387         can work with netmodules.
3388
3389 2008-07-28  Geoff Norton  <gnorton@novell.com>
3390
3391         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
3392         regression tests.
3393
3394 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3395
3396         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
3397         correct place.
3398
3399 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
3400
3401         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3402           The float param registers and other param registers must be the 
3403           same index on Windows x64.
3404
3405         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
3406           ArgValuetypeAddrInIReg argument case.  Setting the argument
3407           op to OP_VTARG_ADDR (OP_REGOFFSET)).
3408
3409         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
3410           variable computed above as the copy length for arguments of storage
3411           type ArgValuetypeAddrInIReg.
3412
3413         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
3414           ArgValuetypeAddrInIReg argument case.  This case will rely on
3415           mono_arch_emit_outarg_vt to emit the correct code later in the process.
3416
3417         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
3418           a 32 byte stack allocation for all calls.  We will omit the adjustment for
3419           jump and tail call instructoins as they do not follow the typical call behavior.
3420
3421         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
3422           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
3423           local variable and pass the local variable by reference to the called method.
3424
3425         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
3426           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
3427           of a struct is passed in a register it must be saved with the other
3428           volatile argument on the stack.
3429
3430         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
3431           frame pointer the stack adjustment value must be saved to the unwind 
3432           info structure.
3433
3434         Contributed under MIT/X11 license.
3435
3436 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3437
3438         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
3439         which got lost in the merge.
3440
3441 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3442
3443         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
3444         build.
3445
3446         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
3447         
3448         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
3449         icalls, since they won't be patched.
3450
3451         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
3452         different code sequence when running under valgrind to prevent some valgrind
3453         errors.
3454
3455         * iltests.il.in: Add new regression test.
3456
3457         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
3458         end with a throw.
3459
3460         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
3461         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
3462
3463         * iltests.il.in: Add new test.
3464
3465         * aot-compiler.c: Fix some warnings.
3466
3467         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
3468         Fixes #412494.
3469
3470 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3471
3472         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
3473         (mini_usage_jitdeveloper): Add a missing --wapi option.
3474
3475 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * mini-codegen.c: Simplify the is_fp macros.
3478         (free_up_ireg): Remove, use free_up_reg instead.
3479         (free_up_reg): Fix the fp case.
3480
3481 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3482
3483         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
3484         lowered earlier.
3485
3486         * exceptions-x86.c: Merge some changes which seemed to have got lost
3487         in the linear-ir merge.
3488
3489         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
3490
3491         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
3492         long vreg volatile even if the variable was already created.
3493
3494         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
3495         volatile variables.
3496
3497 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3498
3499         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
3500
3501         * mini.c (mono_jit_compile_method_inner): Add support for 
3502         MONO_EXCEPTION_BAD_IMAGE.
3503
3504         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
3505         mini_method_get_context () returns NULL. Fixes #356531.
3506
3507         * mini.c (mono_method_to_ir): Ditto.
3508         
3509         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
3510         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
3511
3512 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3513
3514         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
3515         in the LDFTN implementation.
3516
3517 2008-07-25  Mark Probst  <mark.probst@gmail.com>
3518
3519         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
3520         code, patch calls to icalls, too, even if they're not in the
3521         shared generic code hash.  Fixes #411962.
3522
3523 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3524
3525         * cpu-x86.md: Increase the length of the fcall opcodes.
3526
3527         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
3528         calls returning floats.
3529
3530         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
3531         on NEWARR.
3532         
3533         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
3534         missed earlier.
3535
3536         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
3537         into the domain->method_code_hash.
3538
3539         * aot-compiler.c: Fix win32 build.
3540
3541         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
3542         
3543         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
3544         gshared NEWARR implementation.
3545
3546         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
3547
3548         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
3549         can be used outside of method_to_ir.
3550
3551         * mini.h (MonoCompile): Add arg_types field.
3552
3553         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
3554         
3555         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
3556         the values of the local arg_array and param_types array.
3557
3558 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3559
3560         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
3561         got accesses might only get generated later when NEWOBJ is decomposed.
3562         
3563         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
3564         looking up the native code of the target method when a delegate is called
3565         for the first time.
3566
3567         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
3568         optimization.
3569
3570         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
3571
3572         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
3573         AOT work on platforms without a working dlsym implementation.
3574
3575         * mini.h: Bump AOT image format version.
3576         
3577 2008-07-24  Mark Probst  <mark.probst@gmail.com>
3578
3579         * mini-exceptions.c: Free a MonoType with
3580         mono_metadata_free_type() instead of g_free().
3581
3582         * aot-runtime.c: Free a MonoType.
3583
3584 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3585
3586         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
3587         optimization.
3588
3589         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
3590         fp stack on x86.
3591
3592 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
3593         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
3594         profiler hook.
3595
3596 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3597
3598         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
3599         NEWOBJ calls on valuetypes.
3600
3601         * iltests.il.in: Add new test.
3602
3603         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
3604
3605 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3606
3607         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
3608         is no longer needed.
3609
3610         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
3611         non register sized integer arguments.
3612         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
3613         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
3614         emit_memcpy2 ().
3615
3616         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
3617         CEE_MONO_RETOBJ.
3618         
3619         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
3620         two a binop with different sized arguments is emitted.
3621
3622         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
3623         instruction in the ins==NULL case.
3624
3625 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3626
3627         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
3628
3629         * mini-x86.c: Fix osx build.
3630
3631         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
3632         opcodes as well.
3633
3634         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
3635         instruction for non int sized variables.
3636
3637         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
3638         implementation.
3639
3640 2008-07-23  Robert Jordan  <robertj@gmx.net>
3641
3642         * method-to-ir.c: Fix MSVC build.
3643
3644 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3645
3646         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
3647         a non int sized type, widen it to an int since newer versions of gcc seem to
3648         generate code which needs this.
3649
3650         * ssa2.c abcremoval2.c: Fix warnings.
3651
3652         * *: Merge the Linear IR branch.
3653
3654         The original branch is at trunk/branches/vargaz/mini-linear-il, and
3655         the ChangeLog file there describes all the changes done over the years. 
3656         Further documentation can be found at www.mono-project.com/Linear_IL.
3657
3658 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3659
3660         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3661           The float param registers and other param registers must be the 
3662           same index on Windows x64.
3663
3664         Contributed under MIT/X11 license.
3665
3666 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
3667
3668         * mini.c: Make the previous fix GC safe.
3669
3670 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
3671
3672         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
3673
3674 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3675
3676         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
3677           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
3678           ArgValuetypeAddrInIReg instead.
3679
3680         Contributed under MIT/X11 license.
3681
3682 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
3683
3684         * mini-codegen.c (get_register_spilling): Fix a warning.
3685
3686 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
3687
3688         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
3689         for types which the initialization fails. Raises the provided exception
3690         at the right stop after cleanup.
3691
3692 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
3693
3694         * aot-compiler.c: Free most of the memory allocated during compilation.
3695
3696         * mini.c (mini_parse_debug_options): Fix a leak.
3697         
3698         * mini.c (mini_method_compile): Don't add the method to the jit info tables
3699         during aot compilation.
3700
3701 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
3702
3703         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
3704         it has too much register pressure.
3705
3706 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
3707
3708         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
3709
3710 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3711
3712         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3713         on x86.
3714
3715         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3716         on amd64 similar to the way it is done on arm.
3717
3718         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3719
3720         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
3721         consistency, normalize error messages, avoid loading aot-only modules in
3722         normal mode.
3723
3724         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
3725         for consistency.
3726
3727         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
3728
3729 2008-07-11  Martin Baulig  <martin@ximian.com>
3730
3731         * debug-debugger.h
3732         (MonoDebuggerInfo): Add `interruption_request'.
3733
3734 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3735
3736         * aot-compiler.c (emit_plt): Remove some dead code.
3737
3738         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
3739
3740         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
3741         return the plt info offset belonging to a given plt entry.
3742
3743         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
3744         mono_aot_get_plt_info_offset.
3745         
3746         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
3747         similar to the amd64 code by makeing jumps through a separate jump table 
3748         instead of embedding the jump addresses into the code.
3749
3750 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
3751
3752         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
3753         method.
3754
3755 2008-07-10  Martin Baulig  <martin@ximian.com>
3756
3757         * mini.c (mini_method_compile): Disable generics sharing when
3758         running in the debugger.
3759
3760 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3761
3762         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
3763
3764         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
3765         the local register allocator from running out of registers on x86 when 
3766         using aot.
3767
3768 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
3769
3770         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
3771         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
3772         C4146.
3773
3774         Contributed under MIT/X11 license.
3775
3776 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3777
3778         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
3779         speed up the assembler.
3780
3781 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3782
3783         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
3784         support.
3785
3786         * mini.c: Move the soft float handling macros a bit earlier, add 
3787         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
3788         place.
3789
3790         * mini.h: Add prototype for mono_arch_fixup_jinfo.
3791
3792         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
3793         read-only to help catch code allocation requests.
3794         
3795         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
3796         and turn it off when using --aot-only or when compiling with --aot=full.
3797
3798         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
3799         jump table for switches from the normal domain mempool, not the code
3800         manager.
3801
3802         * mini-trampolines.c (get_unbox_trampoline): New function to return an
3803         unbox trampoline which handles aot-only mode too.
3804
3805         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
3806         an AOTed unbox trampoline.
3807
3808         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
3809
3810 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3811
3812         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
3813         ""
3814
3815         Contributed under MIT/X11 license.
3816
3817 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3818
3819         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
3820           the unwind information for the method at the end of the allocated block.
3821           
3822         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
3823           MonoCompileArch to hold the unwind info for SEH on Winx64
3824         
3825         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
3826           frame pointer info for the method being compiled.
3827           
3828         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
3829           the call to mono_exception_from_token.
3830           
3831         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
3832           storing the method prolog information in a format that the Winx64 SEH can understand.  This
3833           information is stored a the end of the method block because it is all 32-bit offset based.
3834
3835         Contributed under MIT/X11 license.
3836
3837 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3838
3839         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
3840
3841         * wapihandles.c: Fix warnings.
3842
3843         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
3844         mode.
3845
3846         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
3847         mono_jit_compile_method in aot-only mode since that calls the type 
3848         initializer.
3849         
3850         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
3851         get_delegate_invoke_impl in aot-only mode.
3852
3853         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
3854
3855 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
3856
3857         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
3858
3859         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
3860         is on by default.
3861
3862         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
3863
3864         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
3865         init trampoline from the AOT file as well.
3866
3867         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
3868         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
3869         code.
3870
3871         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
3872         mono_init.
3873
3874         * exceptions-amd64.c: Add _full variants for the remaining exception code
3875         creation functions as well, allow emission of relocatable code, remove
3876         caching since that is now done by the caller.
3877
3878         * mini-exceptions.c: Add _full variants for the remaining exception code
3879         creation functions as well, add aot-only support.
3880
3881         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
3882         if we can determine a proper token for them.
3883         (add_wrappers): Add a few more wrappers.
3884         (emit_method_code): Remove some dead code.
3885         (emit_trampolines): Emit exception code too.
3886
3887         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
3888
3889         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
3890         mono_array_new_va which avoids varargs.
3891
3892         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
3893
3894         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
3895         mono_arch_create_specific_trampoline () in all places.
3896
3897         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
3898         a bit so it can be used for other things as well.
3899         
3900         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
3901         on demand as well.
3902
3903         * exceptions-amd64.c: Rename the caching from the exception code creation
3904         functions, it is done by the caller instead.
3905         
3906         * exceptions-amd64.c: Change the signature of the exception code creation 
3907         functions to allow the creation of relocatable code later.
3908
3909         * mini-exceptions.c: Add a set of functions to query the various 
3910         runtime-generated exception functions.
3911
3912         * mini.c mini-exceptions.c: Use the newly added functions instead of the
3913         mono_arch_.. () functions.
3914         
3915 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3916
3917         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
3918
3919         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
3920
3921         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
3922         (mini_get_vtable_trampoline): Ditto.
3923
3924         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
3925         code in the AOT case by returning the code size and a list of relocations to
3926         the caller.
3927
3928         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
3929
3930 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
3931
3932         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
3933           clean the stack.
3934
3935         Contributed under MIT/X11 license.
3936
3937 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
3940         so the buffer size can be computed correctly. Fixes #404735.
3941
3942         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
3943         normally as cfg->debug_info is already freed.
3944
3945 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
3946
3947         * mini-amd64.c: For calls returning vtypes in registers, don't store
3948         the return address on the stack, instead allocate a separate local for
3949         it. Fixes #404729.
3950
3951 2008-07-05  Mark Probst  <mark.probst@gmail.com>
3952
3953         * mini-trampolines.c, mini.h: Add an argument to
3954         mono_create_jit_trampoline_in_domain() for turning off the adding
3955         of the sync wrapper.
3956
3957         * mini.c: Use the JIT trampoline without sync instead of
3958         ldftn_nosync in static RGCTX invoke wrappers so that the call can
3959         be patched.
3960
3961 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3962
3963         * driver.c: Turn on GSHARED optimization by default.
3964
3965 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
3966
3967         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
3968         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
3969
3970         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
3971         create a variant of the generic trampoline code callable from AOTed trampolines.
3972
3973         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
3974         trampoline code callable from AOTed trampolines.
3975
3976         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
3977
3978 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3979
3980         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
3981         pass-through manner.
3982
3983         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
3984         and don't fail sharing for them anymore.
3985
3986         * mini-exceptions.c: Handle exceptions in shared generic methods.
3987
3988         * generic-sharing.c: When checking the context of a generic
3989         method, also check its class's context.  Don't treat wrappers as
3990         sharable.
3991
3992         * mini-trampolines.c: Some code factored out to
3993         metadata/generic-sharing.c.  Handle the MRGCTX case.
3994
3995         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
3996         we must deal with the method being of another instantiation of the
3997         class.  Add static rgctx invoke wrappers to generic methods.
3998
3999 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4000
4001         * mini.c: Provide all jit infos of generic shared methods with a
4002         generic jit info.
4003
4004         * mini-exceptions.c: Handle the new situation that a generic info
4005         might be available, but not info about the this/vtable/mrgctx
4006         variable.
4007
4008 2008-07-03  Mark Probst  <mark.probst@gmail.com>
4009
4010         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
4011         generic methods.
4012
4013 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
4014
4015         * dominators.c (check_dominance_frontier): Fix a warning.
4016
4017         * mini.h: Add some missing prototypes.
4018
4019         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
4020
4021         * driver.c (mono_jit_init_version): Correct the comments since the first
4022         argument should be the name of the root domain, not a filename.
4023
4024         * aot-runtime.c (make_writable): Error out if this is called while running
4025         with --aot-only.
4026         (load_aot_module): Ditto.
4027
4028         * aot-compiler.c: Really fix the computation of method indexes.
4029
4030         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
4031         optimizations as this is no longer called frequently.
4032
4033         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
4034         method and the invoke impl code and pass it to the delegate trampoline instead of
4035         just the delegate class.
4036
4037 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4038
4039         * aot-compiler.c: Fixup the computation of method indexes.
4040         (add_wrappers): Create the base methods of the runtime invoke wrappers using
4041         the method builder infrastructure.
4042
4043         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
4044         has no header.
4045
4046         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
4047         mode, load the method right away instead of creating a trampoline.
4048
4049         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
4050
4051         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
4052         some checks a bit.
4053
4054 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4055
4056         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
4057         (mono_aot_load_method): Use method_index instead of method->token.
4058
4059         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
4060         can handle icalls etc. properly.
4061
4062         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4063
4064         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
4065
4066         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
4067         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
4068         JIT_ICALL_ADDR patch type.
4069
4070         * patch-info.h: Add JIT_ICALL_ADDR patch type.
4071
4072         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
4073         request flag.
4074         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
4075
4076         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
4077
4078 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * mini.c: Use domain->jit_code_hash_lock for controlling access to
4081         domain->jit_code_hash.
4082
4083 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
4084
4085         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
4086
4087 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
4088
4089         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
4090         get_this_arg_from_call, let it compute it when needed.
4091
4092         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
4093         gsctx from code only when needed.
4094
4095         * mini-trampolines.c (get_generic_context): Rename this to 
4096         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
4097         it can be called by the arch backends.
4098
4099         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
4100
4101 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
4102
4103         * driver.c (mono_main): Add experimental --aot-only command line option.
4104
4105         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
4106         set.
4107
4108 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4109
4110         * driver.c (DllMain): Remove mono_module_handle.
4111
4112         Contributed under MIT/X11 license.
4113
4114 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
4115
4116         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
4117         for emitting methods which are not in the source assembly. Detect and report
4118         failure of assembling+linking.
4119         
4120         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
4121
4122         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
4123
4124 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
4125
4126         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
4127
4128 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
4129
4130         * mini.h: Remove some obsolete prototypes.
4131
4132         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
4133
4134 2008-06-24  Mark Probst  <mark.probst@gmail.com>
4135
4136         * mini.c (get_object_generic_inst): Variable-sized arrays are not
4137         supported by Visual Studio, so use alloca().
4138
4139 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
4140
4141         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
4142         Fixes #402585.
4143
4144 2008-06-23  Mark Probst  <mark.probst@gmail.com>
4145
4146         * mini.c: Fail sharing of a generic method if it contains an open
4147         catch clause (because we don't pass MRGCTXs yet).
4148
4149 2008-06-23  Mark Probst  <mark.probst@gmail.com>
4150
4151         * mini.c: When compiling a method with generic sharing, insert the
4152         method instantiated with an all-Object generic context into the
4153         jit info table, instead of the context of the first instantiation
4154         of the method we happen to compile.
4155
4156 2008-06-18  Martin Baulig  <martin@ximian.com>
4157
4158         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
4159         `major_version' and `minor_version'.
4160
4161 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4162
4163         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
4164         mono_method_is_generic_sharable_impl() takes an additional
4165         argument specifying whether to treat type variables as reference
4166         types.
4167
4168 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4169
4170         * mini.h: Removed obsolete prototypes.
4171
4172 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4173
4174         * mini.c: Don't fail generic sharing for initobj and sizeof - we
4175         already handle them.
4176
4177 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4178
4179         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
4180         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
4181         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
4182         tramp-x86.c: Added a MonoGenericContext* argument to
4183         mono_arch_get_unbox_trampoline() so that it can call other
4184         functions which require it.
4185
4186 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4187
4188         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
4189         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
4190         mono_arch_get_this_arg_from_call() takes a
4191         MonoGenericSharingContext* as well.
4192
4193 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4194
4195         * mini.c: Factor out code for emitting unbox into emit_unbox() and
4196         implement generic sharing of unbox.
4197
4198 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4199
4200         * mini.c: Don't compute the vtable to determine whether a field is
4201         special static, because it might not work for open types.
4202
4203 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4204
4205         * mini.c: Removed the unused token_type and token_source arguments
4206         from get_runtime_generic_context_ptr().
4207
4208 2008-06-17  Marek Habersack  <mhabersack@novell.com>
4209
4210         * mini.c (ADD_BINOP): fix the build
4211
4212 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
4213
4214         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
4215         a widening op.
4216
4217 2008-06-16  Mark Probst  <mark.probst@gmail.com>
4218
4219         * mini.h: Removed class relations enum that's not used anymore.
4220
4221 2008-06-16  Mark Probst  <mark.probst@gmail.com>
4222
4223         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
4224
4225         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
4226         the lazy fetch trampoline access code.
4227
4228 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
4229
4230         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
4231
4232 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
4233
4234         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
4235
4236         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
4237
4238         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
4239
4240 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4241
4242         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
4243         intrinsics.
4244
4245         * mini-ops.h: Add MIN/MAX_UN opcodes.
4246
4247         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
4248         intrinsics.
4249
4250         * basic-math.cs: Add more min/max tests.
4251
4252         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
4253
4254 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4255
4256         * mini.c: Small fix in the prologue of emit_castclass.
4257
4258 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4259
4260         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
4261
4262         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
4263         do not work even for unsigned types. Fixes #400014.
4264
4265         * basic-math.cs: Add regression tests for unsigned Min/Max.
4266
4267 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4268
4269         * mini.c: Added additional context_used argument to several
4270         functions, which will be needed for sharing generic methods.  Use
4271         GET_RGCTX macro wherever appropriate.  Declare only one
4272         context_used in mono_method_to_ir().
4273
4274 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4275
4276         * mini.c, generic-sharing.c: Removed generic class relations.
4277
4278         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
4279         functions due to MRGCTX changes.
4280
4281 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4282
4283         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
4284         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
4285         with calculated IMT.
4286
4287         * mini.c: Generic sharing of calls via generic interfaces.
4288
4289         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
4290         generic method with non-constant MonoGenericContext*.  Instead,
4291         the context is taken out of the method itself.
4292
4293 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4294
4295         * mini.c: Generic sharing of ldvirtftn.
4296
4297 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4298
4299         * mini.c: Generic sharing of ldftn.
4300
4301 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4302
4303         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
4304
4305 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4306
4307         * mini.c: Generic sharing of the special case of ldtoken followed
4308         by a call to GetTypeFromHandle.
4309
4310 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4311
4312         * mini.c: Generic sharing of box for nullable types.
4313
4314 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4315
4316         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
4317         are passed on the stack. Fixes #324807.
4318
4319 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
4320
4321         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
4322         for the ArgValuetypeAddrInIReg case.
4323
4324         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
4325         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
4326
4327         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
4328         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
4329         local variable and pass the local variable by reference to the called method.
4330           
4331         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
4332         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
4333
4334         Contributed under MIT/X11 license.
4335
4336 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
4337
4338         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
4339
4340         * debug-mini.c (mono_debug_print_vars): Release memory after printing
4341         everything.
4342
4343 2008-06-10  Martin Baulig  <martin@ximian.com>
4344
4345         * debug-mini.c
4346         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
4347
4348 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
4349
4350         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
4351         possible error when no arguments are passed.
4352
4353         Contributed under MIT/X11 license.
4354
4355 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
4356
4357         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
4358         where the file name is NULL.
4359
4360 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
4361
4362         * mini.c: Fix s390 build.
4363
4364 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
4365
4366         * trace.c (mono_trace_parse_options): Fix warnings.
4367
4368         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
4369
4370 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
4371
4372         * mini.c (remove_block_if_useless): Avoid printing the method name.
4373         
4374         * mini.c: Remove needless setting of ins->cil_code which is now done by 
4375         MONO_INST_NEW.
4376
4377         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
4378         LMF. Not yet used.
4379
4380         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
4381         translated code after it has been patched.
4382
4383 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
4384
4385         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
4386         avoid problems during code patching on SMP systems.
4387         (emit_call): Avoid adding a patch info which is already added by 
4388         emit_call_body.
4389         (mono_arch_emit_exceptions): Ditto.
4390
4391 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
4392
4393         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
4394         MONO_TYPE_ISSTRUCT already checks for it.
4395
4396 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
4397
4398         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
4399           structs with floats on Winx64 the float registers are not used.  
4400           The integer registers are always used..
4401         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
4402           only one register will be used and only if the size of the struct 
4403           is 1,2,4, or 8 bytes.
4404
4405         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
4406           to work for Winx64.
4407
4408         Contributed under MIT/X11 license.
4409
4410 2008-06-05  Martin Baulig  <martin@ximian.com>
4411
4412         * debug-debugger.c (debugger_lookup_class): Also call
4413         mono_class_setup_methods() here; we're only called from RTI.
4414
4415 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
4416
4417         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
4418         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
4419         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
4420         Post-process object files and add dtrace-generated object, if necessary.
4421
4422         Contributed under MIT/X11 license.
4423
4424 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4425
4426         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
4427         element class.
4428
4429         * mini.c: Generic sharing for unbox.any and castclass.
4430
4431 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4432
4433         * mini.c: Ignore tailcall prefix in shared generic code and when
4434         doing calls which require a vtable/rgctx argument.
4435
4436 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4437
4438         * mini.c: Don't free the JIT info.
4439
4440         * driver.c: Changes in the JIT info table testing code.
4441
4442 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
4445         interruption. Fix some warnings.
4446
4447         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
4448         interruption_checkpoint.
4449
4450 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
4451
4452         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
4453         from embedding applications.
4454
4455 2008-06-02  William Holmes  <billholmes54@gmail.com>
4456
4457         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
4458           reserving 32 bytes on the stack when making calls. 
4459
4460         Contributed under MIT/X11 license.
4461
4462 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
4463
4464         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
4465         the linear IL branch.
4466
4467         * driver.c: Print out more information for --version on arm.
4468
4469 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
4470
4471         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
4472         bb_exit instead, since out of line bblocks might not actually be emitted
4473         out-of-line.
4474         
4475         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
4476         maximum epilog size for out of line bblocks if tracing is enabled.
4477
4478         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
4479
4480 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
4481
4482         * arrays.cs: Regression tests for allocating arrays with negative sizes.
4483
4484 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
4485
4486         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
4487         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
4488         opcodes.
4489
4490 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
4491
4492         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
4493         the 'value' to store is a constant.
4494
4495         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
4496
4497         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
4498         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
4499
4500 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
4501
4502         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
4503         for accessing method->generic_container.
4504
4505 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
4506
4507         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
4508         
4509         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
4510
4511         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
4512
4513         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
4514         fails.
4515
4516 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
4517
4518         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
4519
4520         * mini.c: Handle the case when mono_class_vtable () fails.
4521
4522 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
4523         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
4524         the stat profiler.
4525
4526 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4527
4528         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
4529         together with domain sharing.
4530
4531 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4532
4533         * mini.c: Treat callvirts to final methods like non-virtual calls
4534         when doing generic sharing, i.e. look them up in the runtime
4535         generic context.
4536
4537 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4538
4539         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
4540         with computed types (for generic sharing).
4541
4542         * mini.c: Generic sharing for mkrefany and refanyval.
4543
4544 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
4545
4546         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
4547         possible.
4548
4549         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
4550         the generic sharing code.
4551         
4552         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
4553         when needed.
4554
4555 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4556
4557         * mini.h: Remove the declaration of mono_aot_init_vtable ().
4558
4559 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
4560
4561         * driver.c: updated copyright date
4562
4563 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4564
4565         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
4566         needed.
4567
4568 2008-05-19  Martin Baulig  <martin@ximian.com>
4569
4570         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
4571         pointing to the new `_mono_debug_using_mono_debugger' variable.
4572
4573         * driver.c
4574         (mono_main): Check mono_debug_using_mono_debugger() rather than
4575         the `MONO_INSIDE_MDB' environment variable to check whether we're
4576         inside the debugger.
4577
4578 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
4579
4580         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
4581         argument.
4582
4583 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4584
4585         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
4586
4587         * mini.c: Added mini_assembly_can_skip_verification. This
4588         function checks if the assembly requested to skip verification. 
4589         Fixes part of #387274.
4590
4591 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
4592
4593         * mini.c (mini_get_method): Disable the check for open generic classes when
4594         using generic sharing.
4595
4596         * generics.cs: Add a test for #387034.
4597
4598         * mini.c (mini_get_method): Check whenever the method class is an open generic
4599         type, and return NULL in that case, causing a verification error. Fixes
4600         #384123.
4601
4602 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4603
4604         * driver.c (mono_main): Revert r102623. The right
4605         thing to do is to enable the verifier under verifiable
4606         unless a --security flag was passed.
4607
4608         We need this non-trivial behavior for --verify-all otherwise
4609         mcs-compileall won't be able to use it. As it needs everything to
4610         be verified under validil.
4611
4612 2008-05-06  Martin Baulig  <martin@ximian.com>
4613
4614         Fix #383749.
4615
4616         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
4617         (mono_debugger_thread_cleanup): Likewise.
4618         (mono_debugger_extended_notification): Likewise.
4619
4620 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4621
4622         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
4623         against both inflated and non-inflated methods. We need to check against the
4624         generic definition for cases where the instantiated method is not visible.
4625         We need to check against the inflated types for cases where the instantiation
4626         changes any super type. This fixes #382986.
4627
4628         Note that this doesn't need to be applied to other parts of mono_method_to_ir
4629         that check for visibiliy as generic params only appears as the type subject
4630         of tokens on call opcodes. Field manipulation and ldftn must always
4631         target an exact type.
4632
4633 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4634
4635         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
4636         if no related --security flag is passed.
4637
4638 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4639
4640         * mini-arch.h: Prepare support for ppc64.
4641
4642         Contributed under MIT/X11 license.
4643
4644 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4645
4646         * aot-runtime.c: Prepare support for ppc64.
4647
4648         Contributed under MIT/X11 license.
4649
4650 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4651
4652         * mini-ops.h: Prepare support for ppc64.
4653
4654         Contributed under MIT/X11 license.
4655
4656 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
4657
4658         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
4659
4660         Contributed under MIT/X11 license.
4661
4662 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
4663
4664         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
4665         assemblies, since aot_name is not a full path, causing us to load MS.NET 
4666         assemblies on windows.
4667
4668 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
4669
4670         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
4671         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
4672         * main.c: Use UTF-8 encoded command line instead of Windows default code
4673         page on Windows to support Unicode.
4674         * driver.c (DllMain): New function for mixed-mode assembly support.
4675         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
4676         export __stdcall functions without decoration.
4677
4678         Contributed under MIT/X11 license.
4679
4680 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4681
4682         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
4683         saving it very early.
4684
4685 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4686
4687         * mini.h, mini.c: Lots of code for accessing the old RGCTX
4688         deleted.  The only way to access the new RGCTX is via the
4689         trampline.
4690
4691         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
4692         vtable instead of the RGCTX to static methods.
4693
4694         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
4695         accessing the new RGCTX.
4696
4697         * generic-sharing.c: There is no separation between self, type
4698         arguments and other types in the RGCTX anymore.
4699
4700 2008-04-25  Jonathan Chambers <joncham@gmail.com>
4701
4702         * mini-amd64.c (add_general): Remove previous stack adjustment.
4703         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
4704         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
4705         for 32 bytes of stack space reserved for all calls.
4706         
4707         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
4708         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
4709         adjustment.
4710         
4711         Code contributed under MIT/X11 license.
4712
4713 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
4714
4715         * mini.c (mini_method_verify): Only verify non-inflated methods, check
4716         against the root definition, peeling out method and type instantiations.
4717         Cache verify success results, code that fails verification is still
4718         checked multiple times.
4719
4720 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
4721
4722         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
4723
4724 2008-04-23  Jonathan Chambers <joncham@gmail.com>
4725
4726         * mini-amd64.c (add_general): Always increment stack on Win64.
4727         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
4728         on Win64.
4729         
4730         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
4731         stack based argument handling on Win64.
4732         
4733         Code contributed under MIT/X11 license.
4734
4735 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
4736
4737         * Makefile.am (version.h): Add support for git-svn.
4738
4739 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
4740
4741         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
4742         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
4743         avoiding allocations and libc functions which might deadlock.
4744         
4745         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
4746         'no-gdb-backtrace' option is set.
4747
4748         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
4749
4750         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
4751
4752 2008-04-21  Martin Baulig  <martin@ximian.com>
4753
4754         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
4755         and `get_lmf_addr'; `notification_address' is no longer a pointer.
4756
4757 2008-04-21  Martin Baulig  <martin@ximian.com>
4758
4759         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
4760         `thread_vtable', `event_handler_ptr' and `event_handler'.
4761
4762 2008-04-21  Martin Baulig  <martin@ximian.com>
4763
4764         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
4765         allows delayed initialization of the `executable_code_buffer' when
4766         attaching.
4767
4768 2008-04-21  Martin Baulig  <martin@ximian.com>
4769
4770         * mini.h (mono_debugger_create_notification_function): Removed.
4771         * tramp-*.c (mono_debugger_create_notification_function): Removed.
4772
4773         * mdb-debug-info64.s
4774         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4775
4776         * mdb-debug-info32.s
4777         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4778
4779         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
4780         currently only works on x86 and x86_64, so don't create it on ppc.
4781
4782 2008-04-21  Martin Baulig  <martin@ximian.com>
4783
4784         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
4785
4786         * mini.c
4787         (mini_method_compile): In the fp elimination check, check
4788         `debug_options.mdb_optimizations' in addition to
4789         mono_debug_using_mono_debugger().       
4790
4791         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
4792         disable some JIT optimizations which are only disabled when
4793         running inside the debugger.
4794         Added `--help-debug' option to describe the debugging options.
4795         (parse_debug_options): New static function to parse the `--debug'
4796         options, so we can easily add more stuff in future.
4797
4798 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
4799
4800         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
4801         the method has no body.
4802
4803 2008-04-19  Jonathan Chambers <joncham@gmail.com>
4804
4805         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
4806         assembly is not allowed in MSVC 64-bit compiler. 
4807         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
4808         as we get floating point exceptions everywhere.
4809         
4810         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
4811         correctly align arguments for call to throw_exception.
4812         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
4813         
4814         Code contributed under MIT/X11 license.
4815
4816 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
4817
4818         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
4819
4820 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
4821
4822         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
4823
4824         * mini-amd64.c (NEW_INS): Set cil_code.
4825
4826         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
4827         from mini-amd64.c so all debugger related logic is in one place.
4828
4829         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
4830         later won't have a random ip assigned to them.
4831
4832 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
4833
4834         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
4835         the arch specific function initializes code_size.
4836         (mono_create_delegate_trampoline): Ditto.
4837
4838         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
4839         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
4840         platforms.
4841
4842         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
4843         running under the debugger.
4844
4845         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
4846         debugger.
4847
4848         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
4849         debugger. Also move the disabling of optimizations here from driver.c.
4850         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
4851         debugger.
4852
4853         * mini.h (MonoCompile): Add a few new flags.
4854
4855 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
4856
4857         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
4858         so the cil_code field of created MonoInst's is properly set.
4859         (mini_select_instructions): Ditto.
4860
4861         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
4862         (MONO_INST_NEW_CALL): Ditto.
4863
4864         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
4865         in many places so the ins->cil_code field is properly initialized.
4866
4867         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
4868         place.
4869
4870 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
4871
4872         * mini.c (mini_method_compile): Print a different message when compiling a 
4873         shared method.
4874         
4875         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
4876         > 1.
4877
4878 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4879
4880         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
4881         SSE2 instructions.
4882
4883         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
4884         
4885 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4886
4887         * mini.c (handle_stack_args): Make this return void since its return value was
4888         never used. Also set cfg->unverifiable for invalid IL instead of calling
4889         G_BREAKPOINT ().
4890
4891 2008-04-10  Mark Probst  <mark.probst@gmail.com>
4892
4893         * mini.c: Make sure "this" is live in catch clauses with type
4894         variables in shared generic code.
4895
4896 2008-04-08  Mark Probst  <mark.probst@gmail.com>
4897
4898         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
4899         generic_class_is_reference_type() to ensure the proper behaviour
4900         when sharing generic code and the type in question is a type
4901         argument.
4902
4903 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4904
4905         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
4906         race conditions when printing thread dumps. Fixes #377738.
4907
4908 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
4909         
4910         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
4911         shows up when both MonoInst arguments can cause aliasig.
4912         There is likely no way in the current JIT to trigger this problem, but
4913         it showed up in the development of generics sharing, when in a new
4914         opcode both args of an OP_GROUP can be aliases (addresses of a local).
4915         When the generics sharing code will be committed, its tests will be
4916         valid also for this bug.
4917
4918 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4919
4920         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
4921         PATCH_INFO_METHOD.
4922
4923         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
4924         NULL.
4925
4926 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
4927
4928         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
4929         use a more detailed exception message for InvalidCastException.
4930
4931         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
4932
4933         * driver.c (mono_main): Add --debug=casts option to turn on better 
4934         InvalidCastException message details.
4935
4936         * mini.c (mini_get_debug_options): New helper function to return the address of
4937         the debug_options variable.
4938
4939         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
4940         the jit_tls TLS variable.
4941
4942         * mini.c (mono_jit_tls): New TLS variable.
4943
4944         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
4945         option is used.
4946
4947 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
4948
4949         * mini.h: Removed verifer related stuff. This code was moved to verify.c
4950
4951         * mini.c: Removed verifer related stuff, code moved to verify.c.
4952
4953         * driver.c: Using code from verify.c instead of mini.c.
4954
4955 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
4956
4957         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
4958         longer valid.
4959
4960 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
4961
4962         * mini.c (check_for_method_verify): Enabling verification of
4963         corlib if mono_verify_all is set. Bugs in the verifier preventing that
4964         have been fixed.
4965
4966 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
4967
4968         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
4969         caller saved registers as well.
4970         
4971         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
4972         saved registers as well.
4973
4974 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
4975
4976         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
4977
4978         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
4979         code.
4980
4981 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
4982
4983         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
4984         to get_call_info.
4985         (get_call_info): Take a gsctx argument instead of 'cfg'.
4986
4987 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
4988
4989         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
4990         mono_verify_all is set.
4991
4992         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
4993
4994         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
4995
4996 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
4997
4998         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
4999         an exception.
5000
5001         * driver.c mini.c mini.h: Add a --verify-all development option to test the
5002         verifier and the code generated by the compiler.
5003
5004 2008-03-25  Mark Probst  <mark.probst@gmail.com>
5005
5006         * mini.c: Generic sharing of the non-nullable case of the box
5007         instruction.
5008
5009 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
5010
5011         * inssel.brg: Fix the build.
5012
5013         * iltests.il.in: Add a test for lconv.ovf.u8.un.
5014
5015 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
5016
5017         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
5018         Array:Address. Fixes #372410.
5019
5020         * iltests.il.in: New tests for readonly prefix.
5021
5022 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
5023
5024         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
5025         mini-trampolines.c.
5026
5027         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
5028         mini-exceptions.c.
5029
5030         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
5031         
5032         * mini.c (mono_decompose_op_imm): New helper function.
5033
5034         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
5035         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
5036         return value.
5037
5038         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
5039         mono_arch_output_basic_block. Fix warnings.
5040
5041         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
5042         for now.
5043
5044 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
5045
5046         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
5047         since the extra frame is now detected automatically inside the loop.
5048
5049         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
5050         opts which are now in mono_peephole_ins ().
5051         
5052         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
5053
5054         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
5055         frames and skip duplicate managed-to-native frames. Fixes #367665.
5056
5057         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
5058         opts which are now in mono_peephole_ins ().
5059         (mono_arch_peephole_pass_2): Ditto.
5060
5061         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
5062
5063         * mini-codegen.c (mono_peephole_ins): New helper function containing the
5064         arch independent peephole optimizations.
5065
5066         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
5067         opts which are now in mono_peephole_ins ().
5068
5069         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
5070         
5071         * mini-s390.c (mono_arch_output_basic_block): Fix build.
5072
5073         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
5074         pattern.
5075
5076         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
5077         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
5078         opcode. 
5079
5080 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
5081
5082         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
5083         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
5084         return value.
5085
5086         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
5087         mono_arch_output_basic_block. Fix warnings.
5088
5089 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5090
5091         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
5092         conv.ovf.u.un.
5093
5094 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5095
5096         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
5097         conv.ovf.u.un.
5098
5099         * iltests.il: Add new tests.
5100
5101 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
5102
5103         * mini.c: Removed Windows version macros.
5104
5105 2008-03-20  Mark Probst  <mark.probst@gmail.com>
5106
5107         * generic-sharing.c: Put reflection types in the extensible part
5108         of the runtime generic context.
5109
5110         * mini.c: Generic sharing of the GetTypeHandle special case of the
5111         ldtoken instruction.
5112
5113 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5114
5115         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
5116
5117         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
5118         
5119         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
5120         consistency with the other version on the linear IR branch.
5121
5122         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
5123
5124         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
5125
5126         * iltests.il.in: Add new tests.
5127
5128 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
5129
5130         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
5131
5132         * iltests.il.in: Add new tests.
5133
5134 2008-03-19  Mark Probst  <mark.probst@gmail.com>
5135
5136         * mini.c: Two variables with the same name were declared in
5137         nesting contexts and one wasn't initialized.  Fixed.
5138
5139 2008-03-19  Mark Probst  <mark.probst@gmail.com>
5140
5141         * mini.c: Generic sharing of the initobj instruction.
5142
5143 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
5144
5145         * mini.c: make the test to optimize ldtoken from typeof() more
5146         precise.
5147
5148 2008-03-18  Mark Probst  <mark.probst@gmail.com>
5149
5150         * mini.c: Generic sharing of the initobj instruction for reference
5151         types.
5152
5153 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5154
5155         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
5156         the mono_breakpoint_clean_code() code to perform bound checks.
5157
5158 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
5159
5160         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
5161         mono_arch_patch_callsite() to include the start of the managed method
5162         to be able to perform bound checks.
5163
5164 2008-03-17  Mark Probst  <mark.probst@gmail.com>
5165
5166         * mini.c: Generic sharing for the isinst instruction.
5167
5168 2008-03-17  Mark Probst  <mark.probst@gmail.com>
5169
5170         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
5171         inssel-long32-mips.brg: Added opcodes for doing indirect calls
5172         with the runtime generic context argument.
5173
5174         * mini.c: Share calls to several types of unsharable methods by
5175         putting the address of the method code in the runtime generic
5176         context and doing an indirect call.
5177
5178         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
5179         to switches.
5180
5181 2008-03-16  Mark Probst  <mark.probst@gmail.com>
5182
5183         * generic-sharing.c: Change due to a change in the runtime genric
5184         context API.
5185
5186 2008-03-15  Martin Baulig  <martin@ximian.com>
5187
5188         * tramp-x86.c
5189         (mono_arch_nullify_class_init_trampoline): Add call to
5190         mono_breakpoint_clean_code() to make things work when running
5191         inside the debugger.
5192
5193         * tramp-amd64.c
5194         (mono_arch_nullify_class_init_trampoline): Add call to
5195         mono_breakpoint_clean_code() to make things work when running
5196         inside the debugger.
5197
5198 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5199
5200         * inssel-long.brg (reg): Fix 64 bit build.
5201
5202 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5203
5204         * mini.c, mini.h: Share static generic code by passing it an
5205         implicit argument pointing to the runtime generic context.
5206
5207         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
5208         inssel-long32-mips.brg: New opcodes for calling shared static,
5209         which need to be passed the runtime generic context.
5210
5211         * mini-amd64.c, mini-x86.c: Save the runtime generic context
5212         argument on the stack in the prologue if needed.  New function for
5213         finding the runtime generic context argument from the registers
5214         saved by the trampoline.
5215
5216         * mini-amd64.h, mini-x86.h: Specify which register to use for the
5217         runtime generic context argument.
5218
5219         * tramp-amd64.c: Also restore the register used for the runtime
5220         generic context argument.
5221
5222         * mini-trampoline.c: Resolve shared static calls by consulting the
5223         runtime generic context via the new argument.
5224
5225         * generic-sharing.c: Add an argument to sharability-checking
5226         functions that specifies whether type variables should be treated
5227         as sharable type arguments.
5228
5229         * inssel-x86.brg: Removed a superfluous, buggy rule.
5230
5231         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
5232         to switches.
5233
5234 2008-03-14  Martin Baulig  <martin@ximian.com>
5235
5236         * debug-debugger.c (main_thread_handler): Call
5237         mono_runtime_run_main() without sending any notifications.
5238
5239         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
5240
5241 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5242
5243         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
5244
5245 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5246
5247         * tramp-x86.c: Fixed register restore offsets in the trampoline
5248         code for ECX and EDX.
5249
5250 2008-03-12  Geoff Norton  <gnorton@novell.com>
5251
5252         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
5253         different ucontext_t implementations.
5254         * exceptions-arm.c: Use the above defines to get exceptions working on 
5255         iPhone (based on a patch by Luke Howard lukeh@padl.com)
5256         * mini-arm.c: Implement iPhone icache support (based on a patch by
5257         Luke Howard lukeh@padl.com)
5258
5259 2008-03-12  Mark Probst  <mark.probst@gmail.com>
5260
5261         * mini.c: Enable generic sharing of calls to non-static
5262         non-interface non-generic non-value-type methods.
5263
5264         * mini-trampolines.c: Resolve calls from shared generic code.
5265
5266 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
5267
5268         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
5269
5270         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
5271
5272 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
5273
5274         * mini.c: some fixes for the AOT compiler.
5275
5276 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5277
5278         * cpu-amd64.md: Add clob:1 to some float opcodes.
5279
5280 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
5281
5282         * mini.h: Added MiniVerifierMode enumeration.
5283
5284         * mini.c: Added mini_verifier_set_mode to control
5285         the usage of the new verifier.
5286
5287         * mini.c (mono_method): Integrated the new verifier.
5288
5289         * driver.c: Extended --security option with validil and
5290         verifiable options to activate the new verifier.
5291
5292 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5293
5294         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
5295         optimization to ctors taking 0 or 2 arguments too.
5296
5297         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
5298         a bit.
5299
5300         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
5301
5302         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
5303
5304 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
5305
5306         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
5307         non-aot case as well.
5308
5309         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
5310
5311         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
5312         changes.
5313
5314         * aot-compiler.c (encode_patch): Ditto.
5315
5316         * mini.h (G_MININT32): Fix the definition of this.
5317
5318 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
5319
5320         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
5321
5322         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
5323
5324 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5325
5326         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
5327         methods returning vtypes in registers.
5328         (mono_arch_allocate_vars): Ditto.
5329
5330         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
5331
5332         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
5333
5334         * generics.cs: Add a test from the linear IR branch.
5335
5336         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
5337
5338         * mini.c (inline_method): Cache failed inline attempts.
5339
5340 2008-03-04  Mark Probst  <mark.probst@gmail.com>
5341
5342         * mini.c: For shared methods of generic classes put the location
5343         of "this" into the MonoGenericJitInfo.
5344
5345         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
5346         register out of a MonoContext by register number.  Add the generic
5347         sharing context as an argument to mono_arch_find_this_argument().
5348
5349         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5350         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
5351         for new arch function.
5352
5353         * mini-exception.c: Handle open exception clauses in shared
5354         generic code.
5355
5356         * mini-trampolines.c: Supply additional argument to
5357         mono_arch_find_this_argument().
5358
5359 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5360
5361         * Makefile.am (regtests): Run the bench.exe tests last.
5362
5363 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
5364
5365         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
5366         a bit.
5367
5368 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
5369
5370         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
5371         with MS.
5372
5373         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
5374         
5375         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
5376
5377         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
5378         whose class has no cctor.
5379
5380         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
5381
5382 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
5383
5384         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
5385         unverified.
5386
5387 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
5388
5389         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
5390         to be in sync with the code on the linear IR branch.
5391
5392         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
5393
5394         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
5395
5396 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
5397
5398         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
5399
5400         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
5401
5402         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
5403
5404         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
5405
5406         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
5407         
5408         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
5409         body.
5410
5411 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
5412
5413         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
5414         OP_LOADR4_MEMBASE emission.
5415
5416         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
5417         (mono_spillvar_offset_float): Ditto.
5418
5419         * mini-mips.c (mono_arch_emit_prolog): Ditto.
5420
5421         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
5422         emission.
5423
5424         * basic-long.cs: Add regression tests for them.
5425
5426         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
5427         use.
5428         (mono_arch_allocate_vars): Fix representation of single-precision float
5429         argument.
5430         (mono_arch_output_basic_block): Ditto.
5431
5432         * inssel-mips.brg: Ditto, remove duplicate items.
5433
5434         * mini-mips.c (emit_load_volatile_arguments): New function to handle
5435         arguments of tail calls as on other platforms.
5436         (mono_arch_output_basic_block): Handle tail calls.
5437
5438         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
5439         register.
5440
5441         * objects.cs (test_5_pass_static_struct): Add test for it.
5442
5443         Contributed under MIT/X11 license.
5444
5445 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
5446
5447         * Makefile.am: Use gmcs for compiling the regression tests.
5448
5449         * *.2.cs *.2.il: Rename to *.cs and *.il.
5450
5451 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
5452
5453         * regalloc.h: Make the vassign array smaller.
5454
5455         * mini.c (mini_method_compile): Remove an unused field in cfg.
5456
5457         * mini-codegen.c: Add a bunch of micro optimizations.
5458
5459 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
5460
5461         * regalloc.h: Remove some unused fields.
5462
5463 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
5464
5465         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
5466
5467         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
5468
5469 2008-02-22  Mark Probst  <mark.probst@gmail.com>
5470
5471         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
5472
5473         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
5474         trampoline: Fetch an entry from the runtime generic context.  If
5475         it's NULL, jump to the actual trampoline to fill the runtime
5476         generic context.  Otherwise, return it.
5477
5478         * mini.c: Call the lazy fetch trampoline to get entries out of the
5479         runtime generic context.
5480
5481         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
5482         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
5483         tramp-sparc.c: Stubs for the lazy fetch trampoline.
5484
5485 2008-02-21  Mark Probst  <mark.probst@gmail.com>
5486
5487         * mini.c: Fetch data out of the extensible part of the runtime
5488         generic context instead of calling a helper function.
5489
5490         * generic-sharing.c: Some functions moved into
5491         metadata/generic-sharing.c.  Helper function for fetching other
5492         types now checks and asserts against extensible rgctx (just for
5493         debugging purposes - the helper function isn't called anymore
5494         unless for debugging).
5495
5496 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5497
5498         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
5499         for tail calls up to the point that the tests in iltests.exe run. Also add a
5500         dummy CKFINITE implementation.
5501         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
5502         needed for trampoline LMF frames.
5503
5504         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
5505         trampoline LMF frames.
5506
5507 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
5508
5509         * mini.c (inline_method): clean any pending loader error when inlining fail.
5510         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
5511
5512 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5513
5514         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
5515
5516         * aot-runtime.c (decode_patch_info): Ditto.
5517
5518         * mini.c (mono_resolve_patch_target): Ditto.
5519         
5520         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
5521         icall wrappers.
5522
5523         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
5524         
5525         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
5526         if it references an icall address.
5527
5528 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
5529
5530         * cpu-s390x.md: Remove some more unused opcodes.
5531         
5532         * cpu-s390x.md: Remove some unused opcodes.
5533
5534         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
5535         mono_op_imm_to_op ().
5536
5537         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
5538         instead of a switch statement.
5539         
5540         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
5541         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
5542
5543         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
5544         
5545         * mini-codegen.c: Remove unused mono_regstate2_... functions.
5546
5547         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
5548         -1.
5549
5550 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
5551
5552         * driver.c (mono_main): Improve error reporting when an assembly cannot be
5553         opened. Fixes #362607.
5554
5555         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
5556
5557         * iltests.il.in: Add a test for static methods in interfaces.
5558
5559 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
5560
5561         * genmdesc.c (build_table): Fix a crash on older glib versions.
5562
5563         * cpu-sparc.md: Remove some unused opcodes.
5564         
5565         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
5566         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
5567
5568         * cpu-amd64.md: Remove some unused opcodes.
5569
5570         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
5571         like the other opcodes.
5572
5573 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
5574
5575         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
5576
5577         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
5578
5579         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
5580         variables 'cfg' instead of 'm' for consistency.
5581
5582         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
5583
5584         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
5585         argument holding the vtype return address, to avoid the ambigious use of
5586         cfg->ret for this purpose.
5587
5588         * mini.c (NEW_RETLOADA): Use vret_addr if set.
5589
5590         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
5591         
5592         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
5593         new mono_print_ins () function which only takes one argument.
5594
5595 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
5596
5597         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
5598         macro arguments.
5599
5600 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
5601
5602         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
5603
5604         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
5605
5606         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
5607         opcodes and other small changes.
5608
5609         * mini-ops.h: Add some new opcodes from the linear IR branch.
5610
5611         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
5612
5613         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
5614         opcodes, use the REG_MEMBASE opcodes instead.
5615         
5616         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
5617         opcodes, use the REG_MEMBASE opcodes instead.
5618         
5619         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
5620         linear IR branch.
5621
5622         * mini.c (mono_op_imm_to_op): New helper function.
5623
5624         * mini-ops.h: Add some opcodes from linear IR branch.
5625
5626 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
5627
5628         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
5629         <tsv@solvo.ru>.
5630
5631 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
5632
5633         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
5634         OP_ICONV_TO_R4/R8.
5635
5636         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
5637
5638 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
5639
5640         * aot-compiler.c (emit_method_code): Add an assert.
5641
5642         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
5643         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
5644         methods.
5645
5646 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
5647
5648         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
5649         some load/store opcodes so they are consistent. 
5650         (mono_arch_emit_prolog): Simplify some code.
5651
5652         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
5653
5654         * objects.cs: Add tests for large argument offsets on ARM.
5655
5656         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
5657         stack offsets. Fixes #359651.
5658
5659         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
5660
5661         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
5662
5663         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
5664
5665         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
5666
5667         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
5668
5669         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
5670         rid of CEE_CONV_R_UN.
5671
5672         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
5673
5674 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
5675
5676         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
5677
5678         * mini.c (mono_normalize_opcodes): Add some more opcodes.
5679
5680         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
5681
5682         * cpu-amd64.md: Remove some unused opcodes.
5683
5684         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
5685
5686         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
5687
5688         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
5689         arch specific functions for its parts. Call the peephole pass after local
5690         regalloc so the prolog can compute a more accurate max_offset.
5691         
5692         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
5693         the corresponding OP_I/OP_L opcodes.
5694
5695         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
5696
5697         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
5698
5699 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5700
5701         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
5702         as they are handled in mini.c.
5703
5704         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
5705         
5706         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
5707         case since it is handled in mini.c.
5708
5709         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
5710
5711         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
5712
5713         * *.c: Use the new opcodes in the IR and back end code.
5714
5715         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
5716
5717         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
5718
5719 2008-02-06  Mark Probst  <mark.probst@gmail.com>
5720
5721         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
5722         an assert because it has a race condition.
5723
5724 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5725
5726         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
5727
5728         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
5729
5730         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
5731
5732         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
5733         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
5734
5735 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
5736
5737         * cpu-amd64.md (move): Correct the maximum size of move.
5738
5739 2008-02-05  Mark Probst  <mark.probst@gmail.com>
5740
5741         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
5742         the generic class init trampoline to return quickly if the class
5743         is already inited.
5744
5745 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
5748         issues where an 32 bit callsite cannot be patched by a 64 bit address.
5749
5750 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
5751
5752         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
5753         branch.
5754
5755 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
5756
5757         * objects.cs: Add some soft-float tests.
5758
5759         * mini.c: Fix a couple more soft-float issues.
5760
5761         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
5762
5763         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
5764         avoid a REX prefix.
5765
5766 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
5767
5768         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
5769         exception happens while compiling a virtual method.
5770
5771 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
5772
5773         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
5774         
5775         * mini-sparc.c: Fix build.
5776
5777         * mini-sparc.c (get_call_info): Add support for generic sharing.
5778
5779         * mini-exceptions.c: Add a FIXME.
5780
5781 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
5782
5783         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
5784         altstack handling code.
5785
5786         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
5787         
5788         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
5789
5790         * mini-s390.c: Add support for generic sharing.
5791
5792         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5793         Fix CAS on s390.
5794         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5795
5796         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
5797
5798         * mini-s390x.c: Add support for generic sharing.
5799         
5800         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5801         Fix CAS on ia64.
5802         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5803
5804         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
5805         can be used since it takes a 16 bit signed immediate.
5806
5807         * inssel-s390x.brg: Fix OP_SETRET.
5808
5809         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
5810
5811         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
5812
5813         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
5814
5815         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
5816
5817         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
5818         in one place.
5819
5820         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
5821         stuff.
5822
5823         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
5824         of the unused mono_arch_patch_delegate_trampoline stuff.
5825
5826 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
5827
5828         * basic-long.cs: Move the fp related tests to basic-float.cs.
5829
5830         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
5831
5832         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
5833
5834         * basic-calls.cs: Add a test for proper float argument passing.
5835
5836         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
5837         if the context corresponds to an exception received through a signal.
5838
5839         * exceptions.cs: Add a test for nullref handling at the start of a try
5840         clause.
5841
5842         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
5843
5844         * jit-icalls.c (mono_break): New JIT icall.
5845
5846         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
5847
5848         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
5849
5850 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
5851
5852         * cpu-*.md: Get rid of unused opcodes.
5853
5854         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
5855
5856         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
5857         by all platforms.
5858
5859         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
5860         define.
5861
5862         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
5863         the arch independent trampoline code in mini-trampolines.c.
5864
5865         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
5866
5867         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
5868
5869         * mini-s390.h: Remove an unused define.
5870         
5871         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
5872         the arch independent trampoline code in mini-trampolines.c.
5873
5874         * mini-arm.c (mono_arch_emit_prolog): Fix build.
5875
5876 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
5877
5878         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
5879
5880         * mini-s390.c (mono_arch_emit_prolog): Fix build.
5881
5882         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
5883
5884         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
5885
5886         * cpu-amd64.md: Use smaller sizes for int opcodes.
5887
5888         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
5889
5890         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
5891         objects.cs.
5892
5893         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
5894         debugging.
5895
5896         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
5897         instead of though a pointer to save an indirection when accessing elements of
5898         the array.
5899
5900         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
5901         some typos.
5902         (NOT_IMPLEMENTED): New helper macro.
5903         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
5904         of a bb.
5905
5906         * *.c: Use the new helper macro.
5907
5908 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
5909
5910         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
5911
5912 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
5913
5914         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
5915         stack slots.
5916
5917 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
5918
5919         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
5920         profiling is enabled.
5921         
5922         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
5923         the end.
5924         (mono_arch_emit_prolog): Add more first bblock optimizations.
5925
5926         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
5927         in order if possible.
5928         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
5929         bblock, since the arguments are still in their original registers.
5930
5931         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
5932
5933 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
5934
5935         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
5936         as well.
5937
5938         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
5939         offset 0.
5940
5941         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
5942
5943         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
5944         process async exceptions received while in unmanaged code.
5945
5946         * mini.c (mini_init): Install a callback with the runtime which will be called
5947         when a thread receives an async exception while in unmanaged code.
5948
5949         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
5950
5951         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
5952
5953 2008-01-16  Wade Berrier  <wberrier@novell.com>
5954
5955         * cpu-g4.md:
5956         * cpu-arm.md:
5957         * cpu-s390x.md:
5958         fix build
5959
5960 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
5961
5962         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
5963         compilation with sun cc.
5964
5965         * cpu-*.md: Fix the build.
5966
5967         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
5968
5969         * mini-amd64.h: Add some comments to the MonoLMF structure.
5970
5971         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
5972         
5973         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
5974         in the LMF structure if possible. This saves two instructions in the
5975         managed->native wrappers.
5976
5977         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
5978
5979 2008-01-16  Mark Probst  <mark.probst@gmail.com>
5980
5981         * generic-sharing.c: New type argument lookup code which uses the
5982         runtime generic context template.
5983
5984 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
5985
5986         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
5987
5988         * mini-arm.c (add_general): Fix arm eabi parameter passing.
5989         (mono_arch_output_basic_block): Fix localloc implementation.
5990
5991         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
5992
5993         * mini-ia64.c (peephole_pass): Fix ia64 build.
5994
5995         * mini-amd64.c (peephole_pass): Fix a warning.
5996         
5997         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
5998         at a constant offset from sp/fp.
5999
6000         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
6001         instead of obtaining it from *lmf in the managed method case.
6002
6003 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
6004
6005         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
6006
6007 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
6008
6009         * mini.h (MonoInstList): New type.
6010         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
6011         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
6012         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
6013         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
6014         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
6015         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
6016         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
6017         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
6018         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
6019         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
6020         MONO_INST_LIST_FOR_EACH_ENTRY,
6021         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
6022         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
6023         mono_inst_list_first, mono_inst_list_last,
6024         mono_inst_list_next, mono_inst_list_prev): New instruction
6025         list handling interfaces.
6026         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
6027         list head 'ins_list'.
6028         (MonoInst): Replace next pointer with list head 'node'.
6029         (MonoCallInst): Make 'out_args' a MonoInstList.
6030         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
6031         (MonoCompile): Delete reverse_inst_list and
6032         reverse_inst_list_len.
6033         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
6034         mono_arch_lowering_pass, mono_arch_local_regalloc,
6035         mono_arch_output_basic_block, mono_arch_emit_prolog):
6036         Convert to new instruction lists.
6037         (insert_after_ins): Delete.
6038         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
6039         instruction lists.
6040         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
6041         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
6042         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
6043         mono_emulate_opcode, mono_emit_load_got_addr,
6044         inline_method, mono_method_to_ir, mono_print_bb_code,
6045         print_dfn, decompose_pass, nullify_basic_block,
6046         replace_out_block_in_code, remove_block_if_useless,
6047         merge_basic_blocks, move_basic_block_to_end,
6048         try_unsigned_compare, optimize_branches, mono_print_code,
6049         mini_select_instructions, remove_critical_edges): Likewise.
6050         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
6051         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
6052         mono_arch_output_basic_block, mono_arch_emit_prolog):
6053         Likewise.
6054         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
6055         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6056         mono_arch_output_basic_block): Likewise.
6057         (inst_list_prepend, insert_after_ins): Delete.
6058         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
6059         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
6060         instruction lists.
6061         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
6062         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
6063         mono_arch_emit_prolog): Likewise.
6064         * cfold.c (mono_constant_fold): Likewise.
6065         * liveness.c (visit_bb, mono_analyze_liveness,
6066         optimize_initlocals): Likewise.
6067         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
6068         * graph.c (mono_draw_code_cfg): Likewise.
6069         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
6070         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
6071         mono_ssa_cprop): Likewise.
6072         * abcremoval (get_relations_from_previous_bb, process_block):
6073         Likewise.
6074         * local-propagation (mono_cprop_invalidate_values,
6075         mono_local_cprop_bb): Likewise.
6076         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
6077         peephole_pass, mono_arch_output_basic_block,
6078         mono_arch_emit_prolog): Likewise.
6079         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
6080         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6081         mono_arch_emit_prolog): Likewise.
6082         (insert_after_ins): Delete.
6083         * aliasing.c (print_code_with_aliasing_information,
6084         mono_build_aliasing_information, mono_aliasing_deadce):
6085         Convert to new instruction lists.
6086         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
6087         peephole_pass, NEW_INS, mono_arch_lowering_pass,
6088         mono_arch_local_regalloc, mono_arch_output_basic_block):
6089         Likewise.
6090         (insert_after_ins): Delete.
6091         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
6092         peephole_pass, mono_arch_output_basic_block): Convert to
6093         new instruction lists.
6094         * mini-codegen (InstList, inst_list_prepend,
6095         insert_after_ins): Delete.
6096         (insert_before_ins, get_register_force_spilling,
6097         get_register_spilling, free_up_ireg, free_up_reg,
6098         create_copy_ins, create_spilled_store, alloc_int_reg,
6099         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
6100         to new instruction lists.
6101         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
6102         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6103         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
6104         (insert_after_ins): Delete.
6105         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
6106         mono_arch_local_regalloc, mono_arch_output_basic_block,
6107         mono_arch_call_opcode): Convert to new instruction lists.
6108         (insert_after_ins): Delete.
6109         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
6110         peephole_pass, mono_arch_output_basic_block,
6111         mono_arch_emit_prolog): Convert to new instruction lists.
6112
6113 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
6114
6115         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
6116
6117         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
6118         Fixes #353182.
6119
6120         * Makefile.am (version.h): Make this work with non-bash shells.
6121
6122 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
6123
6124         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
6125
6126 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
6127
6128         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
6129         the InitializeArray optimization.
6130
6131 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
6132
6133         * mini.c driver.c: Don't include os/gc_wrapper.h.
6134
6135 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
6136
6137         * mini.c (print_jit_stats): Print GC statistics if available.
6138
6139 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
6140
6141         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
6142
6143 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
6144
6145         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
6146
6147 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
6148
6149         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
6150         
6151         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
6152
6153         * driver.c (mono_main): Ditto.
6154
6155 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
6156
6157         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
6158
6159         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
6160         in the vtable can't be encoded.
6161         (compile_method): Ditto.
6162
6163 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
6164
6165         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
6166         defined.
6167
6168         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
6169         lmf->rbp.
6170
6171         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
6172         the top LMF entry belongs to the current method.
6173
6174         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
6175
6176 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
6177
6178         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
6179         
6180         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
6181
6182         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
6183
6184         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
6185
6186         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
6187
6188         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
6189         implementation.
6190
6191         * basic-float.cs: Add an ulong->double cast test.
6192
6193 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
6194
6195         * mini.c (mono_method_to_ir): Fix a warning.
6196
6197 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
6198
6199         * mini-ops.h: Add OP_SWITCH.
6200
6201         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
6202         CEE_SWITCH in back-end code, use OP_SWITCH instead.
6203
6204 2007-12-11  Geoff Norton  <gnorton@novell.com>
6205
6206         * mini-s390x.c: Minor change to the MAX() define to allow
6207         it to compile with other gcc versions.
6208
6209 2007-12-11  Geoff Norton  <gnorton@novell.com>
6210
6211         * cpu-s390x.md:
6212         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
6213
6214 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6215
6216         exceptions-arm.c (mono_arch_get_restore_context): Restore
6217         the frame pointer.
6218
6219         exceptions-arm.c (throw_exception): Save the frame pointer.
6220         This is a partial fix for #323747. Only the client side is
6221         fixed.
6222
6223 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6224
6225         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
6226         was using an unrelated variable to log the class which
6227         needed the cctor to be called. This was crashing on arm.
6228
6229 2007-12-09  Robert Jordan  <robertj@gmx.net>
6230
6231         * mini-x86.c (mono_arch_emit_epilog):
6232         Consider all kinds of 64-bit types. Fixes #323114.
6233
6234 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
6235
6236         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
6237
6238 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6239
6240         * mini-amd64.c (peephole_pass): Add a missing instruction check.
6241
6242 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6243
6244         * mini.c: run type ctor before allocating an object, not only
6245         when running it's constructor method (fixes at least part of bug #342507).
6246
6247 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6248         
6249         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
6250         
6251         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
6252         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
6253         function.
6254
6255         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
6256         mono_generic_class_init_trampoline () the same as it is done with the other
6257         trampolines.
6258
6259         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
6260         aot-runtime.c aot-compiler.c: Implement AOT support.    
6261
6262 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6263
6264         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
6265         build for archs which don't have the vtable trampoline defined
6266         yet.
6267
6268 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6269
6270         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
6271
6272         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
6273
6274         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
6275
6276         * tramp-<ARCH>.c: Use the new helper function.
6277
6278 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6279
6280         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
6281         trampoline call, which takes a vtable argument.
6282
6283         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
6284         OP_TRAMPCALL_VTABLEs like other calls.
6285
6286         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
6287         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
6288         call.  Implemented a support function which fetches the vtable
6289         from a register set.
6290
6291         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
6292         Implemented a generic class init trampoline, using the
6293         OP_TRAMPCALL_VTABLE opcode.
6294
6295         * mini.c: Implemented static field access when sharing generic
6296         code.  This implies initing the class using the new
6297         OP_TRAMPCALL_VTABLE call.
6298
6299 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6300
6301         * mini.c: Don't compile methods with sharing enabled if their
6302         classes are disabled for sharing.
6303
6304 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6305
6306         * inssel.brg: Add a missing sign extension to the GETCHR and array access
6307         opcodes. Fixes #346563.
6308
6309         * objects.cs: Add a new test.
6310
6311         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
6312
6313         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
6314         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
6315
6316 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6317
6318         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
6319
6320 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
6321
6322         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
6323         code stream.
6324
6325 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
6326
6327         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
6328
6329         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
6330         optimization in the AOT case.
6331         
6332 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
6333
6334         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
6335         
6336         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
6337
6338         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
6339
6340         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
6341
6342         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
6343         is created by the inlined delegate ctor.
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.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
6348
6349 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
6350
6351         * cpu-x86.md: Fix the length of ckfinite.
6352
6353 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
6354
6355         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
6356         
6357         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
6358         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
6359
6360         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
6361
6362         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
6363         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
6364
6365 2007-11-28  Martin Baulig  <martin@ximian.com>
6366
6367         * mini-x86.c
6368         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
6369         after creating the trampoline.
6370
6371 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
6372
6373         * aot-runtime.c (load_aot_module): Check runtime version if needed.
6374
6375         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
6376         the same version.
6377
6378         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
6379         instead of the calling method to help AOT.
6380
6381         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
6382
6383 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
6384
6385         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
6386         is defined.
6387
6388 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
6389
6390         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
6391         
6392         * aot-compiler.c (compile_method): Correct check for generic method definitions.
6393         (encode_method_ref): No need to handle generic method definitions specially.
6394
6395         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6396
6397         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
6398         decode_klass_info.
6399
6400         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
6401         encode_klass_info.
6402         (compile_method): Enable generic sharing.
6403
6404 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
6405
6406         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
6407         (mini_method_compile): Add preliminary support for AOTing shared generic code.
6408
6409         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
6410         generic code.
6411
6412         * mini-trampolines.c: Fix a warning.
6413
6414         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
6415         NEW_PCONST.
6416         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
6417         (generic_class_is_reference_type): Remove unused function.
6418
6419         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
6420         in the generic vtable trampoline case.
6421
6422         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
6423         
6424         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
6425         return an AOT method based on a vtable slot.
6426
6427         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
6428
6429         * mini.c (mini_get_vtable_trampoline): Export this.
6430
6431 2007-11-22  Martin Baulig  <martin@ximian.com>
6432
6433         * debug-debugger.h
6434         (MonoDebuggerInfo): Move `debugger_version' up.
6435
6436 2007-11-22  Martin Baulig  <martin@ximian.com>
6437
6438         * mini-amd64.c
6439         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
6440
6441         * mini-trampolines.c
6442         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
6443         after compiling the method.
6444
6445 2007-11-20  Martin Baulig  <martin@ximian.com>
6446
6447         * debug-mini.c
6448         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
6449         (mono_debugger_remove_breakpoint): Likewise.
6450         (mono_debugger_check_breakpoints): Likewise.
6451
6452         * debug-debugger.c: Implement the new breakpoint interface here.
6453
6454 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
6455
6456         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
6457         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
6458
6459         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
6460
6461 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
6462
6463         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
6464
6465         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
6466         mini.c.
6467
6468         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
6469         mini.c.
6470
6471         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
6472         returning a vtype in a register.
6473
6474         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
6475         here from the arch specific code.
6476
6477         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
6478         mini.c.
6479
6480         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
6481         (mono_arch_emit_prolog): Increment maximum prolog size.
6482
6483         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
6484         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
6485
6486         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
6487         MonoGenericSharingContext.
6488
6489         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
6490         MonoGenericSharingContext. Allocate memory from the cfg mempool.
6491
6492 2007-11-15  Mark Probst  <mark.probst@gmail.com>
6493
6494         * mini.c, mini.h, generic-sharing.c: Functions for producing code
6495         which extract fields out of the runtime generic context.  Full
6496         sharing of the NEWARR opcode.
6497
6498 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6499
6500         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
6501         --enable-minimal=ssa.
6502
6503 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
6504
6505         * mini-trampolines.c (mono_delegate_trampoline): Update after 
6506         mono_marshal_get_delegate_invoke () signature change.
6507
6508 2007-11-13  Mark Probst  <mark.probst@gmail.com>
6509
6510         * mini.c: Removed the shared context in favor of the generic
6511         sharing context.  Allocate the MonoJitInfo structure with room for
6512         the generic sharing context if it's needed.
6513
6514         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
6515         domain-internals.h now.
6516
6517         * mini-x86.c: Pass the generic sharing context to get_call_info ().
6518
6519         * generic-sharing.c: Several changes for working without a shared
6520         context and instead operating on open types instead.
6521
6522 2007-11-12  David S. Miller  <davem@davemloft.net>
6523
6524        * inssel-sparc.brg: Fix double instruction emit.
6525
6526 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
6527
6528         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
6529         Get/Set/Address methods.
6530         
6531         * mini.c debug-debugger.c mini-trampolines.c: Update after 
6532         mono_marshal_get_delegate_invoke signature change.
6533
6534 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6535
6536         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
6537         This can happens with dynamic methods. Fixes the other bug in #322722.
6538
6539 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6540
6541         * tramp-arm.c (mono_arch_patch_callsite): Support patching
6542         BX call sequence.
6543
6544         * mini-arm.c (arm_patch): Implement patching of BX call
6545         sequence. Fixes one of the bugs in #322722.
6546
6547 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
6548
6549        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
6550        under Linux.  We only need to flush every 32-byte cache line.    
6551
6552 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
6553
6554         * mini.c:
6555         move_basic_block_to_end: Add branches when needed, eventually creating
6556         a new BB.
6557         optimize_branches: added a parameter that tells if it's ok to create
6558         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
6559         and avoid calling move_basic_block_to_end when it's not ok.
6560         Fixes bug 318677.
6561
6562 2007-11-07  Mark Probst  <mark.probst@gmail.com>
6563
6564         * mini.c: Abort inlining call to InitializeArray if something
6565         looks wrong.  Let the icall handle it, which now has proper safety
6566         checks.
6567
6568 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6569
6570         * mini.c (mono_spill_call): add support for soft-float.
6571
6572         * mini.c (mono_method_to_ir): add support for soft-float
6573         to inlined functions that return float.
6574
6575         * mini.c (mono_method_to_ir): add support for soft-float
6576         to cee_stsfld opcode on float fields.
6577
6578 2007-11-05  Geoff Norton  <gnorton@novell.com>
6579
6580         * mini-x86.h: Fix the structure access for X86 Leopard.
6581
6582
6583 2007-11-05  Martin Baulig  <martin@ximian.com>
6584
6585         * mini-trampolines.c
6586         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
6587         after compiling the method to notify the debugger.
6588
6589 2007-11-05  Martin Baulig  <martin@ximian.com>
6590
6591         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
6592
6593 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
6594
6595         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
6596         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
6597
6598 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
6599
6600         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
6601         native-to-managed wrappers.
6602         
6603 2007-11-01  Geoff Norton  <gnorton@novell.com>
6604
6605         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
6606         members.
6607
6608 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
6609
6610         * mini.c, mini-x86.c: when getting back from unmanaged code
6611         to managed via a marshaled delegate we also need to set the
6612         right domain.
6613
6614 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
6615
6616         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
6617         for amd64.
6618
6619 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6620
6621         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
6622         let the debugger or other external agents to tell the JIT when
6623         a sw breakpoint has been inserted in the code that the JIT needs
6624         to be able to inspect.
6625
6626 2007-10-31  Martin Baulig  <martin@ximian.com>
6627
6628         * debug-debugger.h
6629         (MonoDebuggerInfo): Remove `runtime_class_init'.
6630
6631 2007-10-30  Martin Baulig  <martin@ximian.com>
6632
6633         * debug-mini.h
6634         (mono_debugger_thread_created): Added `MonoThread *' argument.
6635         (mono_debugger_extended_notification): New public method.
6636         (mono_debugger_trampoline_compiled): New public method.
6637
6638         * debug-mini.c
6639         (MonoDebuggerThreadInfo): Added `thread' and
6640         `extended_notifications' fields.
6641
6642         * debug-debugger.c
6643         (debugger_executable_code_buffer): New static variable.
6644
6645         * debug-debugger.h
6646         (MonoDebuggerInfo): Added `executable_code_buffer',
6647         `executable_code_buffer_size', `breakpoint_info_area',
6648         `breakpoint_table' and `breakpoint_table_size'.
6649
6650 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
6651
6652         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
6653         that IP  either is an unused value or the vtable pointer. IMT 
6654         calls use vtable + offset now. Reduced by almost half the size
6655         of IMT entries.
6656
6657 2007-10-26  Jonathan Chambers <joncham@gmail.com>
6658
6659         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
6660         defines to access param registers. Replace long usage with
6661         gsize as sizeof(long) != sizeof(void*) on Win64.
6662
6663         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
6664         on Win64. Fix intrinsic, use _AddressOfReturnAddress
6665         instead of non-existant _GetAddressOfReturnAddress.
6666
6667         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
6668         param registers. Save/restore %rdi and %rsi in MonoLMF.
6669
6670         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
6671         param registers. Modify (throw_exception) signature to take 
6672         %rdi and %rsi on Win64. 
6673
6674         Code is contributed under MIT/X11 license.
6675
6676 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6677
6678         * helpers.c: unlink debugging output files.
6679
6680 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
6681
6682         * mini.c: Move mono_create_ftnptr () to object.c.
6683
6684 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6685
6686         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
6687         optional. This function can now be used to disassemble code generated
6688         outside the JIT such as trampolines and IMT thunks.
6689
6690         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
6691
6692         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
6693         vtable pointer from a ldr instruction.
6694
6695         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
6696         new IMT call sequence.
6697
6698         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
6699         call sequence for interface invocations.
6700
6701         * mini-arm.c (mono_arch_emit_imt_argument): added, required
6702         for imt support. This function is empty since IMT on ARM requires no
6703         special handling on the IR side.
6704
6705         * mini-arm.c (mono_arch_find_imt_method): added, required for
6706         imt support.
6707
6708         * mini-arm.c (mono_arch_find_this_argument): added, required
6709         for imt support.
6710
6711         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
6712         a ldr instruction to load a value stored in the code stream.
6713
6714         * mini-arm.c (mono_arch_build_imt_thunk):added, required
6715         for imt support.
6716
6717
6718 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
6719
6720         * mini.c (mini_init): Install the jump trampoline callback.
6721
6722 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6723
6724         * mini-trampolines.c: handle synchronized methods with the common
6725         vtable trampoline (bug #335601).
6726
6727 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
6728
6729         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
6730
6731         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
6732         64 bit platforms.
6733
6734         * mini-ia64.h mini-ia64.c: Add support for IMT.
6735
6736         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
6737         prolog. Fixes #331958.
6738
6739 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
6740
6741         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
6742
6743 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6744
6745         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
6746         trampoline.
6747
6748 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6749
6750         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
6751         trampoline.
6752
6753 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
6754
6755         * mini-x86.c, mini-x86.h: x86 support for the common vtable
6756         trampoline.
6757
6758 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
6759
6760         * mini-trampolines.c: changed the magic rampoline to understand
6761         the common vtable trampoline method: the method to invoke is
6762         determined by the vtable displacement of the call.
6763
6764 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6765
6766         * mini.c, mini.h: register the common vtable trampoline if the
6767         architecture supports it.
6768
6769 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6770
6771         * cpu-amd64.md: use the correct max length for tls_get.
6772
6773 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
6774
6775         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
6776         CEE_STELEM_ANY. Fixes #333696.
6777
6778 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
6779
6780         * exceptions-x86.c: provide more graceful handling of the case where
6781         we followed a bogus function pointer from managed code (bug #332866).
6782
6783 2007-10-11  Mark Probst  <mark.probst@gmail.com>
6784
6785         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
6786         replaces the generic_shared flag and will carry more information
6787         in the future.
6788
6789         * generic-sharing.c: Added mini_type_stack_size() which allows
6790         allows open types if given a generic sharing context.
6791         mini_get_basic_type_from_generic() takes a
6792         MonoGenericSharingContext* instead of a MonoCompile* now.
6793
6794         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
6795         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
6796         mini-sparc.c, mini-x86.c: Trivial changes required by the two
6797         changes above.  Just passing arguments through to the right
6798         places.
6799
6800 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
6801
6802         * mini-arm.c: unify the call emission to emit_code_seq().
6803
6804 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
6805
6806         * tramp-arm.c: reduced the trampoline size.
6807
6808 2007-10-10  Mark Probst  <mark.probst@gmail.com>
6809
6810         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
6811         variable handling out of arch-specific code.
6812
6813 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
6814
6815         * mini-arm.c: implemented fast delegate dispatch.
6816
6817 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6818
6819         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
6820         that fp elimination is turned off if the space required by locals is too
6821         big. Fixes #331958.
6822
6823 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
6824
6825         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
6826         ARM to the new style trampoline.
6827
6828 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6829
6830         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
6831
6832         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
6833
6834 2007-10-09  Martin Baulig  <martin@ximian.com>
6835
6836         * debug-debugger.h
6837         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
6838         `field_info_offset_offset'.     
6839
6840 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
6841
6842         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
6843         removed more internal usage of the r11 register and made it available
6844         to the register allocator.
6845
6846 2007-10-08  Mark Probst  <mark.probst@gmail.com>
6847
6848         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
6849         when sharing generics and treat type variables as references.
6850
6851 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6852
6853         * mini-ppc.c: started removing the internal uses of register r11
6854         to eventually allow the register allocator to manage it as an
6855         additional available register.
6856
6857 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
6858
6859         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
6860
6861 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
6862
6863         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
6864         specific trampolines as they are not performance critical as a jump
6865         target (maybe align as before only for AOT code?). This saves about
6866         200 KB of native code on x86 for monodevelop startup.
6867
6868 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
6869
6870         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
6871         monodevelop startup.
6872
6873 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
6874
6875         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
6876
6877         * mini-sparc.h mini-sparc.c: Implement IMT support.
6878
6879         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
6880         its smaller and doesn't clobber sparc_g1.
6881
6882         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
6883
6884 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6885
6886         * mini-ppc.c: optimized the size of the IMT thunks a bit.
6887
6888 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
6889
6890         * mini-ppc.c: implemented fast delegate invocation.
6891
6892 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
6893
6894         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
6895
6896 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6897
6898         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
6899         code to the new style trampoline in preparation for IMT support.
6900
6901 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
6902
6903         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
6904         systems already. This also reduces the specific trampiline sizes and
6905         prepares for the use of r12 as the IMT identifier register.
6906
6907 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6908
6909         * mini-mips.h: endianess fix (simplified from a patch by
6910         Thomas Kunze <thommy@tabao.de>, bug #323737).
6911
6912 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6913
6914         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
6915         to access ucontext fields and enable netbsd support
6916         (partially from Magnus Henoch <mange@freemail.hu>).
6917
6918 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6919
6920         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
6921         use the preprocessor from the CPP env var if it is set.
6922
6923 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6924
6925         * mini-trampolines.c: fixed an assertion and moved it earlier in the
6926         code, before interface_offset gets used.
6927
6928 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
6929
6930         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
6931         mono_class_setup_vtable () before accessing klass->vtable.
6932
6933 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
6934
6935         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
6936         hackish.
6937
6938 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6939
6940         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
6941         IMT slots (this saves hundreds of KB of memory in programs like
6942         IronPython and Monodevelop).
6943
6944 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
6945
6946         * mini.c: print the delegate counter.
6947
6948 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
6949
6950         * mini-x86.c: make it easier to enable the debugging code for IMT
6951         slots.
6952
6953 2007-09-28  Martin Baulig  <martin@ximian.com>
6954
6955         * debug-debugger.h
6956         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
6957         `mono_method_klass_offset' and `mono_method_token_offset'.
6958
6959 2007-09-20  Mark Probst  <mark.probst@gmail.com>
6960
6961         * mini.c: First generics sharing implementation.  Can only share
6962         in very simple cases.  If sharing doesn't work it falls back to
6963         dedicated compilation.
6964
6965         * mini.h: Flag in MonoCompile to specify whether generic
6966         compilation is shared.  Flags enum for marking which generic inst
6967         of a context is used.  Prototypes for helper functions.
6968
6969         * generic-sharing.c: Helper functions for generic method sharing.
6970
6971         * optflags-def.h: Optimization flag (gshared) for enabling generic
6972         method sharing added.
6973
6974         * Makefile.am: generic-sharing.c added.
6975
6976 2007-09-19 Daniel Nauck <dna@mono-project.de>
6977
6978         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
6979
6980 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
6981         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
6982         fixes bug 325507.
6983
6984 2007-09-19  Martin Baulig  <martin@ximian.com>
6985
6986         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
6987         mono_debug_cleanup() is now part of mono_cleanup().
6988
6989 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
6990
6991         * driver.c (mono_main): Fix a warning.
6992
6993 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
6994
6995         * aot-compiler.c: Optimize various parts when processing large assemblies.
6996         Fixes ##325568.
6997
6998         * mini.c (mono_patch_info_hash): Improve hash function.
6999
7000 2007-09-14  Jonathan Chambers <joncham@gmail.com>
7001
7002         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
7003         
7004         Code is contributed under MIT/X11 license.
7005
7006 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
7007
7008         * mini.c (mini_init): Fix a leak.
7009
7010         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
7011
7012 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7013
7014         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
7015
7016 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
7017
7018         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
7019
7020 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
7021
7022         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
7023         variance tests.
7024
7025         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
7026
7027         * mini.c (handle_alloc): Enable managed allocators in AOT code.
7028
7029         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
7030
7031         * aot-runtime.c (decode_patch_info): Ditto.
7032
7033 2007-09-12  Jonathan Chambers <joncham@gmail.com>
7034
7035         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
7036         static case. Cache delegates in architecture specific code, 
7037         based on number of parameters.
7038         
7039         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
7040         in architecture specific code, based on number of parameters.
7041         
7042         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
7043         caching happen in architecture specific code now.
7044         
7045         Code is contributed under MIT/X11 license.
7046
7047 2007-09-12  Jonathan Chambers <joncham@gmail.com>
7048
7049         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
7050         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
7051         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
7052
7053         Code is contributed under MIT/X11 license.
7054
7055 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7056         * mini.c: (mono_thread_abort) Fixed bug #82416.
7057
7058 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
7059
7060         * mini.: hook the new managed GC allocation feature into the JIT.
7061
7062 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7063
7064         * mini.c: implementation for the new runtime tls opcode.
7065
7066 2007-09-11  Martin Baulig  <martin@ximian.com>
7067
7068         * debug-debugger.h
7069         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
7070         `mono_method_inflated_offset'.
7071
7072 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
7073
7074         * driver.c mini.h mini.c: Add a new devel command line option for injecting
7075         async exceptions into a method.
7076
7077         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
7078         purpose of testing whenever the unwinder works at every instruction.
7079
7080 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
7081
7082         * mini.c: check accessibility of method used in ldftn (fixes
7083         bug #82635).
7084
7085 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
7086
7087         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
7088
7089         * inssel.brg: Fix a warning.
7090
7091 2007-09-03  Martin Baulig  <martin@ximian.com>
7092
7093         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
7094         now takes the `main_method' as argument.
7095
7096 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
7097
7098         * cpu-sparc.md (endfilter): Add missing src1:i argument.
7099
7100 2007-08-30  Jonathan Chambers <joncham@gmail.com>
7101
7102         * driver.c: include the cil-coff.h header on Windows.
7103         
7104         Code is contributed under MIT/X11 license.
7105
7106 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7107
7108         * mini.c, driver.c: don't include the cil-coff.h header.
7109
7110 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
7111
7112         * mini.c: flag places that needs fixes fo soft-float support.
7113
7114 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
7115
7116         * mini.h, inssel-float.brg: fix soft-float constant loads on big
7117         endian systems (partially from Dean Jenkins, bug #81924).
7118
7119 2007-08-28  Mark Probst  <mark.probst@gmail.com>
7120
7121         * mini.c (check_linkdemand): Remove embedded reference object in
7122         call to LinkDemandSecurityException.
7123         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
7124         with an IntPtr instead of a reference object.
7125
7126 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
7127
7128         * mini.c (handle_initobj): Handle alignment properly.
7129
7130         * inssel.brg (mini_emit_memset): Ditto. 
7131
7132         * inssel.brg (mini_emit_memcpy): Ditto. 
7133
7134         * inssel-sparc.brg: Ditto.              
7135
7136         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
7137
7138 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
7139
7140         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
7141         exceptions raised in unmanaged code. Fixes part of #82594.
7142
7143 2007-08-24  Mark Probst  <mark.probst@gmail.com>
7144
7145         * mini.c (mono_method_to_ir), declsec.c
7146         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
7147
7148 2007-08-22  Martin Baulig  <martin@ximian.com>
7149
7150         * debug-mini.h
7151         (MonoDebuggerThreadInfo): New typedef.
7152         (mono_debugger_thread_table): New global variable.
7153         (mono_debugger_thread_created): New public function.
7154         (mono_debugger_thread_cleanup): New public function.
7155
7156         * debug-debugger.h
7157         (MonoDebuggerInfo):
7158         - removed `get_current_thread' and `lookup_assembly'.
7159         - removed `data_table'.
7160         - added `thread_table'.
7161
7162         * mini.c
7163         (mono_thread_start_cb): Call mono_debugger_thread_created().
7164         (mono_thread_attach_cb): Likewise.
7165         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
7166         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
7167         initial domain.
7168
7169         * driver.c (mono_main): Move mono_debug_init() up, before calling
7170         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
7171
7172 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7173
7174         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
7175         together when passing several arguments of type double (gives a small
7176         speedup and saves a few bytes of generated code).
7177
7178 2007-08-20  Jb Evain  <jbevain@novell.com>
7179
7180         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
7181
7182 2007-08-20  Jb Evain  <jbevain@novell.com>
7183
7184         * mini.c (mono_method_to_ir): throw MethodAccessException
7185         and FieldAccessException instead of InvalidProgramException.
7186
7187 2007-08-20  Mark Probst  <mark.probst@gmail.com>
7188
7189         * mini.c: CoreCLR security checks.
7190
7191         * mini.h: Removed MonoSecurityMode (moved to
7192         metadata/security-manager.h) and mono_security_mode global var
7193         (replaced by set/get functions in security-manager.h).
7194
7195         * driver.c: Added "core-clr-test" security mode for testing.  Used
7196         set-function for setting security mode.
7197
7198 2007-08-17  Mark Probst  <mark.probst@gmail.com>
7199
7200         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
7201         the new jit_info_table.
7202
7203         * driver.c: Test code for the new jit_info_table (enabled by the
7204         define MONO_JIT_INFO_TABLE_TEST).
7205
7206 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
7207
7208         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
7209         detection of call <REG> instruction sequence. Fixes build on freebsd.
7210
7211 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
7212
7213         * mini-exceptions.c: Fix a warning.
7214
7215 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
7216
7217         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
7218         stack overflow handling code on amd64 too.
7219
7220         * mini-exceptions.c (mono_setup_altstack): Make this use 
7221         mono_thread_get_stack_bounds ().
7222
7223         * mini-x86.h: Disable sigaltstack on solaris x86.
7224
7225 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
7226
7227         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
7228
7229 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
7230
7231         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
7232
7233 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
7234
7235         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
7236
7237         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
7238
7239 2007-08-03  Neale Ferguson <neale@sinenomine.net>
7240
7241         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
7242         due to alignment.
7243
7244 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7245
7246         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
7247         to be emitted (bug #82281).
7248
7249 2007-08-01  Martin Baulig  <martin@ximian.com>
7250
7251         Merged the `debugger-dublin' branch.
7252
7253         * debug-debugger.h (MonoDebuggerInfo):
7254         Removed the `old_*' compatibility entries.
7255         Added `debugger_version' and `data_table'.
7256         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
7257         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
7258
7259         * debug-mini.c
7260         (MiniDebugMethodBreakpointInfo): Add `address_list'.
7261         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
7262         instead of a `gconstpointer'.
7263         (mono_debugger_insert_method_breakpoint): Return a
7264         `MonoDebugMethodAddressList *'.
7265
7266 2007-06-28  Martin Baulig  <martin@ximian.com>
7267
7268         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7269
7270 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
7271
7272         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
7273         __builtin_frame_address () since it is broken on older gcc versions.
7274
7275 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
7276
7277         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
7278         on the stack overflow handling and made the managed stack overflows
7279         catchable in most cases using soft guard pages.
7280         * exceptions-x86.c: added code to restore the protection in the soft
7281         guard pages at the end of exception handling.
7282
7283 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
7284
7285         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
7286
7287 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7288
7289         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
7290         exception handling.
7291
7292 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7293
7294         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
7295         signal handling support until it has been ported to the new mechanism.
7296         * mini.c: fixed stack overflow detection and use the new
7297         architecture code  to handle signals on the altstack.
7298
7299 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
7300
7301         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
7302         stack overflows on the alt stack.
7303
7304 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
7305
7306         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
7307         stack overflows on the alt stack.
7308
7309 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
7310
7311         * exceptions-ppc.c: cleanup preparing for altstack support.
7312
7313 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7314
7315         * exceptions-arm.c: cleanup preparing for altstack support.
7316
7317 2007-07-27  Mark Probst  <mark.probst@gmail.com>
7318
7319         * mini.c (print_jit_stats): Output hazard pointer stats.
7320
7321 2007-07-26  Mark Probst  <mark.probst@gmail.com>
7322
7323         * driver.c, mini.c: Replaced security mode flags with a single
7324         enum variable.
7325
7326 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7327
7328         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
7329
7330 2007-07-25  Mark Probst  <mark.probst@gmail.com>
7331
7332         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
7333         (which doesn't do anything yet) for activating Core CLR
7334         (Silverlight) security.
7335
7336 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
7337
7338         * mini-codegen.c: work around a possible gcc bug on arm.
7339
7340 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
7341
7342         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
7343         message for platforms that don't support AOT compilation.
7344
7345 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
7346
7347         * mini.h, mini.c, driver.c: temporary smcs hack.
7348
7349 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
7350
7351         * mini-arm.h, mini-arm.c: arm EABI fixes.
7352
7353 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
7354
7355         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
7356         case.
7357
7358         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
7359         trampolines taking a method argument.
7360
7361         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
7362
7363         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
7364         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
7365
7366         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
7367         JIT compilation throws an exception. Fixes #82050.
7368
7369 2007-07-19  Mark Probst  <mark.probst@gmail.com>
7370
7371         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
7372         with the MONO_EXCEPTION_ defines.
7373
7374 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
7375
7376         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
7377         #82117.
7378         
7379         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
7380         the cause of an assertion.
7381
7382 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
7383
7384         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
7385         removed.
7386
7387 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
7388
7389         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
7390         assert. Should fix #82103.
7391
7392 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
7393
7394         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
7395         here too. Fixes #82095.
7396
7397         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
7398         addresses.
7399
7400         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
7401
7402         * mini-amd64.h: Enable IMT for amd64.
7403         
7404         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
7405
7406 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
7407
7408         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
7409
7410 2007-07-12  Mark Probst  <mark.probst@gmail.com>
7411
7412         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
7413         as soon as check_linkdemand sets an exception_type.
7414
7415 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7416
7417         * mini-x86.c: fixed offsets for IMT call sequence.
7418         * mini-x86.h: enable IMT again.
7419
7420 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7421
7422         * trace.c (mono_trace_enter_method): Decode MonoType too.
7423
7424         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
7425
7426         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
7427
7428         * mini-amd64.c: Add preliminary IMT implementation.
7429         
7430 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
7431
7432         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
7433         understand the new IMT-base interface invocation (thanks to
7434         Daniel Nauck for the report and the remote debugging session).
7435
7436 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
7437
7438         * mini-x86.c: size and speed optimizations for the IMT bsearch.
7439
7440 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7441
7442         * Makefile.am (aotcheck): Make this actually use the AOTed code.
7443
7444 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
7445
7446         * mini-trampolines.c: implement AOT IMT support.
7447         * mini-x86.h: enable IMT support for wider testing.
7448
7449 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7450
7451         * inssel.brg (emit_imt_argument): Add aot support here.
7452
7453         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
7454
7455 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
7456
7457         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
7458         of the IMT implementation, partially from massi, with my
7459         implementation of the bsearch sequence. Disabled by default until
7460         the AOT code is implemented.
7461
7462 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7463
7464         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
7465
7466         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
7467
7468 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7469
7470         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
7471         arch-independent IMT JIT code from Massimiliano
7472         Mantione (massi@ximian.com) with small cleanups from me.
7473
7474 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7475
7476         * Makefile.am: fix svn invocation to get the svn revision to be
7477         independent of the local language (build fix).
7478
7479 2007-07-09  Mark Probst  <mark.probst@gmail.com>
7480
7481         * mini.c (inline_method): Reset cfg->exception_type if the
7482         inlining is aborted.  Fixes: 82049.
7483
7484 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
7485
7486         * mini.c: remove assert from exception handling code when exception_ptr
7487         is not set.
7488
7489 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7490
7491         * mini.c (mono_codegen): Add an assert.
7492
7493         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
7494         enter and leave code.
7495         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
7496
7497 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7498
7499         * mini-ppc.c: fixed memory corruption for localloc(0)
7500         (bug #81852).
7501
7502 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7503         
7504         * mini.c: Fix warnings.
7505
7506 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
7507
7508         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
7509         to emit better double->int conversions.
7510
7511 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7512
7513         * mini.c: the provided Min/Max optimizations are valid for unisgned
7514         ints.
7515
7516 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
7517
7518         * 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
7519
7520 2007-06-28  Miguel de Icaza  <miguel@novell.com>
7521
7522         * mini.c (mono_running_on_valgrind): Add support for reporting the
7523         method and  its boundaries to valgrind.
7524
7525 2007-06-28  Martin Baulig  <martin@ximian.com>
7526
7527         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7528
7529 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
7530
7531         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
7532
7533         * generic.2.cs: Add new test case.
7534
7535 2007-06-25  Martin Baulig  <martin@ximian.com>
7536
7537         Merged the `debugger-dublin' branch.
7538
7539         * debug-mini.c
7540         (mono_debugger_insert_method_breakpoint): New public method.
7541         (mono_debugger_remove_method_breakpoint): Likewise.
7542         (mono_debugger_check_breakpoints): New static method.
7543         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
7544
7545         * debug-debugger.h (MonoDebuggerInfo):
7546         Renamed (to keep backward compatibility in the vtable):
7547         `insert_breakpoint' -> `old_insert_breakpoint'.
7548         `remove_breakpoint' -> `old_remove_breakpoint'.
7549         `create_string' -> `old_create_string'.
7550         `lookup_class' -> `old_lookup_class'.
7551         `lookup_type' -> removed; changed into a dummy field.
7552         `lookup_assembly' -> `old_lookup_assembly'.
7553         Added (same functionality, but different signature):
7554         `create_string', `lookup_class', `lookup_assembly'
7555         Added new:
7556         `get_method_addr_or_bpt', `remove_method_breakpoint',
7557         `runtime_class_init'.
7558
7559         * debug-debugger.c: Merged the `debugger-dublin' branch.
7560
7561 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
7562
7563         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
7564         well.
7565         (peephole_pass): Likewise.
7566
7567 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
7568
7569         * driver.c: hopefully make setaffinity work also for ancient
7570         versions of linux.
7571
7572 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
7573
7574         * driver.c : win32 build fix.
7575
7576 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
7577
7578         * driver.c: check for the MONO_NO_SMP env var and bind to a single
7579         processor if it is set.
7580
7581 2007-06-21  Martin Baulig  <martin@ximian.com>
7582
7583         * debug-mini.h: New file.
7584
7585         * debug-mini.c
7586         (mono_debugger_insert_breakpoint_full): Moved here from
7587         ../metadata/mono-debug-debugger.c.
7588         (mono_debugger_remove_breakpoint): Likewise.
7589         (mono_debugger_breakpoint_callback): Likewise.
7590
7591 2007-06-15  Raja R Harinath  <rharinath@novell.com>
7592
7593         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7594         changes in MonoGenericClass.
7595
7596 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
7597
7598         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
7599
7600 2007-06-14  Raja R Harinath  <rharinath@novell.com>
7601
7602         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7603         removal of MonoGenericMethod.
7604
7605 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7606
7607         * mini-exceptions.c: hooks for the exception events profiling API.
7608
7609 2007-06-14  Randolph Chung  <tausq@debian.org>
7610
7611         * Makefile.ma: Add hppa target.
7612         * mini-arch.h: Include mini-hppa.h
7613         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
7614         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
7615         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7616
7617 2007-06-14  Randolph Chung  <tausq@debian.org>
7618
7619         * inssel.brg: Add rules for "chained" compare-branch operations so that
7620         a single compare op can affect multiple branches.  Adjust cost for
7621         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
7622         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
7623         cost for some rules so that they can more easily be overridden by
7624         per-arch rules (with fixes from lupus).
7625         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7626
7627 2007-06-13  Randolph Chung  <tausq@debian.org>
7628
7629         * mini-ops.h: Reorder branch ops so that they match the order of the
7630         corresponding CEE_* ops.  The code expects them this way.
7631         Add new ops for HPPA target.
7632         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7633
7634 2007-06-13  Randolph Chung  <tausq@debian.org>
7635
7636         * mini-exceptions.c: Handle cases where the stack grows towards
7637         larger addresses.
7638         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7639
7640 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7641
7642         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
7643         counter.
7644         * driver.c: explain where a non-matching corlib is found.
7645
7646 2007-06-13  Mark Probst  <mark.probst@gmail.com>
7647
7648         * mini.c (print_jit_stats): Output dynamic code allocation stats.
7649
7650 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
7651
7652         * mini-exceptions.c: Generate a method profile leave event during
7653         an exception to ensure that the profiler gets notified.
7654
7655 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
7656
7657         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
7658         branch.
7659
7660         * cpu-amd64.md: Add long_and/or/xor opcodes.
7661
7662 2007-06-06  Wade Berrier  <wberrier@novell.com>
7663
7664         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
7665         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
7666         length of instruction shr_imm (expected 8, got 10)
7667
7668 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
7669
7670         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
7671
7672 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7673
7674         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7675         MonoInternalHashTable again (fixed bug in the internal hash table
7676         code).
7677
7678 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7679
7680         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
7681         Have to figure out what makes it crash the SWF regression.
7682
7683 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
7684
7685         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
7686
7687 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7688
7689         * mini.c: optimize out the type check when storing null in a
7690         reference array.
7691
7692 2007-06-04  Mark Probst  <mark.probst@gmail.com>
7693
7694         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7695         MonoInternalHashTable.
7696
7697 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
7698
7699         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
7700         signed integer methods.
7701
7702 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7703
7704         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
7705         permanently since the current approach doesn't work.
7706
7707 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7708
7709         * inssel.brg (stmt): Only call delegate->invoke_impl if 
7710         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
7711
7712 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7713
7714         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
7715         the sreg2==rdx case.
7716         
7717         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
7718         account if it contains a rex prefix.
7719         (peephole_pass): Handle OP_FMOVE as well.
7720
7721 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7722
7723         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
7724         as it causes regressions.
7725
7726 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
7727
7728         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
7729         static case as well.
7730
7731         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
7732
7733         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7734         (mono_arch_get_this_arg_from_call): Ditto.
7735
7736         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
7737
7738         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
7739         invoke_impl field.
7740
7741         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7742         (mono_arch_get_this_arg_from_call): Ditto.
7743
7744         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
7745         
7746         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
7747         try to create optimized invoke code and use that for further invocations. 
7748         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
7749
7750         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
7751
7752 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
7753
7754         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
7755         sealed classes or methods.
7756         *devirtualization.cs: tests for the new optimization
7757
7758 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
7759
7760         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
7761         by the update_volatile () function.
7762
7763 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
7764
7765         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
7766         require it.
7767
7768         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
7769
7770 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
7771
7772         * mini.c: Add configure checks for header files.
7773         * mini-x86.c: Add configure checks for header files.
7774         * trace.c: Add configure checks for header files.
7775         * aot-runtime.c: Add configure checks for header files.
7776         * aot-compiler.c: Add configure checks for header files.
7777         * driver.c: Add configure checks for header files.
7778         * mini-codegen.c: Add configure checks for header files.
7779         
7780         Code is contributed under MIT/X11 license.
7781
7782 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
7783
7784         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
7785         icompare_imm -128 + op_iclt. Fixes #81703.
7786
7787 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
7788
7789         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
7790
7791 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7792
7793         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
7794         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
7795         so that all isinst checks now use "interface_bitmap".
7796
7797 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
7798
7799         * cpu-amd64.md (jmp): Fix a warning.
7800
7801         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
7802
7803         * basic.cs: Add new regression test.
7804
7805         * basic.cs: Remove test which is now in basic-long.cs.
7806
7807         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
7808
7809         * basic-long.cs: Add new test.
7810         
7811 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
7812
7813         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
7814
7815 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
7816
7817         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
7818
7819         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
7820         places.
7821         
7822         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
7823         throwing code a bit.
7824
7825         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
7826         the exception throwing code a bit.
7827
7828         * mini-x86.c (get_call_info): Allocate result from a mempool.
7829
7830 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
7831
7832         * aot-compiler.c (find_typespec_for_class): Fix the assert.
7833
7834         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
7835
7836         * mini.h (MonoCompile): Add 'token_info_hash' field.
7837
7838         * mini.c: Save token->method associations during compilation so the AOT 
7839         compiler can use it.
7840         
7841         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
7842         which reference generic classes and methods.
7843
7844 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
7845
7846         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
7847
7848         * aot-compiler.c (compile_method): Fix a typo in a comment.
7849
7850         * aot-runtime.c (decode_cached_class_info): Skip generic types.
7851
7852         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
7853         everything generic.
7854
7855         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
7856
7857 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
7858
7859         * mini.h (MonoCompile): Add 'args' field.
7860
7861         * mini.c (mono_compile_create_vars): Store variables representing the arguments
7862         into cfg->args.
7863
7864         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
7865
7866 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
7867
7868         * mini.c (mono_compile_get_interface_var): Remove this unused function.
7869
7870         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
7871
7872         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
7873         opcodes for some opcodes.
7874
7875         * mini.h *.brg *.c: Use the new opcodes.
7876
7877 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
7878
7879         * mini.h: Bumped aot revision.
7880
7881         * inssel.brg: modified code generation of type checks for interfaces
7882         to use the new "MonoClass.interface_bitmap" instead of the old
7883         "MonoClass.interface_offsets".
7884
7885 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
7886
7887         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
7888
7889 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
7890
7891         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
7892         64 bit platforms.
7893
7894 2007-04-27  Neale Ferguson <neale@sinenomine.net>
7895
7896         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
7897
7898 2007-04-27  Wade Berrier  <wberrier@novell.com>
7899
7900         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
7901         mini.h) to fix build.
7902
7903 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
7904
7905         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
7906         
7907         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
7908         causes the corlib unit tests to fail.
7909
7910 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
7911
7912         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
7913
7914         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
7915
7916         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
7917         opcodes to the comparison relations.
7918
7919         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
7920         opcodes to their types.
7921         
7922         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
7923
7924         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
7925         it in cfg->arch.cinfo.
7926
7927         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
7928
7929         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
7930         cfg->cil_offset_to_bb.
7931
7932 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
7933
7934         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
7935         created becase of initlocals.
7936
7937 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
7938
7939         * mini-alpha.c cpu-alpha.md: More alpha port work from 
7940         Sergey Tikhonov <tsv@solvo.ru>.
7941
7942 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
7943
7944         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
7945
7946 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
7947
7948         * cpu-s390.md (break): Correct the length of break instruction.
7949
7950 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7951
7952         * mini.c: fix a couple of soft-float issues and comments.
7953
7954 2007-04-15  Miguel de Icaza  <miguel@novell.com>
7955
7956         * trace.c (is_filenamechar): - is also a filename char.
7957
7958 2007-04-15  Neale Ferguson <neale@sinenomine.net>
7959
7960         * mini-s390.c: Correct checking for enum type in return value processing.
7961
7962 2007-04-14  Raja R Harinath  <rharinath@novell.com>
7963
7964         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
7965         (version.h): Makefile is in the build directory.
7966
7967 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
7968
7969         * mini-amd64.h: fix for assertion failure on Solaris/amd64
7970
7971 2007-04-11  Martin Baulig  <martin@ximian.com>
7972
7973         * mini.c (can_access_member): Fix handling of generic classes;
7974         fixes #81259.
7975
7976 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
7977
7978         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
7979
7980 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
7981
7982         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
7983
7984 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
7985
7986         * mini-codegen.c: make sure the right spill amount is
7987         used for fp or integer registers (fixes the float_sub_spill() on ppc).
7988
7989 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
7990
7991         * mini-ppc.c: fixes for the fp_branch_nan test.
7992
7993 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
7994
7995         * basic.cs: Comment out new test which still fails on ia64.
7996
7997 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7998
7999         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
8000
8001 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8002
8003         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
8004
8005 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
8006
8007         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
8008         on 64 bit machines. Fixes part of #80738.
8009
8010         * basic.cs: Add regression test.
8011
8012 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
8013
8014         * inssel.brg basic.cs: Revert previous change to fix build.
8015
8016         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
8017         platforms.
8018         
8019         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
8020
8021         * basic.cs: Add new regression test.
8022
8023 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
8024
8025         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
8026         many arguments.
8027
8028 2007-03-16  Neale Ferguson <neale@sinenomine.net>
8029
8030         * cpu-s390x.md: Correct length of break instruction.
8031
8032 2007-03-16  Neale Ferguson <neale@sinenomine.net>
8033
8034         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
8035         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
8036
8037 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
8038
8039         * *.c: Begin WIN64 port.
8040         * mini.c:  Use correct register in profiler.
8041         * mini-amd64.c: No inline assembly on Win64.
8042         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
8043         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
8044         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
8045         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
8046         mono_arch_ip_from_context for Win64.
8047         
8048         Contributed under MIT/X11 license.
8049
8050 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
8051
8052         * exceptions-amd64.c (seh_handler): Ditto.
8053
8054         * exceptions-x86.c (seh_handler): Fix a memory leak.
8055
8056 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
8057
8058         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
8059         mini-s390x.c: fixed peephole optimizations to deal
8060         correctly with 1 and 2 byte reload avoidance.
8061
8062 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
8063
8064         * cpu-s390.md, cpu-s390x.md: update localloc length.
8065
8066 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8067
8068         * cpu-g4.md: added missing descriptions.
8069
8070 2007-03-14  Miguel de Icaza  <miguel@novell.com>
8071
8072         *  Makefile.am: Add support so the tail tests are not executed on
8073         PowerPC as that is a known limitation of the PowerPC port.
8074
8075 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
8076
8077         * runmdesc.bat:  Move to msvc directory.
8078         
8079 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
8080
8081         * runmdesc.bat:  Run executable that was produced by the current
8082         target and sent via an argument.
8083         
8084 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
8085
8086         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
8087         #81102.
8088
8089         * generics.2.cs: Add regression test.
8090
8091 2007-03-09  Wade berrier  <wberrier@novell.com>
8092
8093         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
8094
8095 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
8096
8097         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
8098         AOT code depends on this.
8099
8100 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
8101
8102         * mini.c: more precise tracking of types in the eval stack
8103         (part of fix for bug #81044).
8104
8105 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
8106
8107         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
8108
8109         * aot-compiler.c (encode_patch): Remove an obsolete comment.
8110
8111 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
8112
8113         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
8114
8115         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
8116
8117 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
8118
8119         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
8120         a pointer on 64 bit systems. Fixes #80190.
8121
8122         * iltests.il: Add new regression test.
8123
8124 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8125
8126         * mini.c: inline a constant for Environment.IsRunningOnWindows.
8127
8128 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
8129
8130         * trace.c: Remove an erroneous alignemnt check when tracing.
8131           Fixes --trace on OSX86.
8132
8133 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8134
8135         * mini-$(arch).h: initialize SP in context for all the archs.
8136
8137 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
8138
8139         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
8140         regressions in the thread tests.
8141
8142 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
8143
8144         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
8145         - fixed implementation of LOCALLOC opcode
8146         - implemented non-un compare for floats
8147         - code cleanup
8148         - implementation of FDIV and CKFINITE opcodes
8149         - fixes for latest mono updates
8150         - additional arch opcodes
8151
8152 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8153
8154         * Makefile.am: simplify and merge rules for cross-compilation.
8155
8156 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
8157
8158         * local-propagation.c: Actually *apply* the fix for bug 80591...
8159
8160 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8161
8162         * mini-exceptions.c: backuot part of the last change
8163         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
8164
8165 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
8166         * inssel.brg: Fix bug 59286.
8167
8168
8169 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
8170
8171         * mini-exceptions.c: patch from Zoltan to correctly check for
8172         stack boundaries (using the stack register, not the frame register),
8173         fixes bugs #80724, #79717.
8174
8175 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
8176
8177         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
8178         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
8179
8180         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
8181         presence of frame pointer elimination.
8182
8183 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
8184         
8185         * mini-x86.h: NetBSD UCONTEX_REG defines.
8186
8187 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
8188
8189         * inssel-amd64.brg: Fix amd64 build.
8190
8191 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
8192
8193         * mini.h: remove extern to workaround what looks likes gcc bug 26905
8194         on amd64.
8195
8196 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
8197
8198         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
8199         ends.
8200
8201         * mini-<ARCH>.c: Use mono_is_regsize_var ().
8202
8203 2007-01-30 Mark Mason <mason@broadcom.com>
8204
8205            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
8206            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
8207            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
8208            beginning support for CEE_JMP [not quite working yet]
8209            * tramp-mips.c: LMF handling now works
8210         
8211 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
8212
8213         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
8214
8215         * mini.h (NULLIFY_INS): New macro.
8216
8217 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8218
8219         * mini.c: statistical profiler fix for windows, patch
8220         from Tor Lillqvist (tml@novell.com).
8221
8222 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
8223         * local-propagation.c: Fix bug 80591.
8224
8225 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8226
8227         * Makefile.am: put back the --export-dynamic option as with
8228         the previous gmodule flags (thanks to Robert Jordan).
8229
8230 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
8231
8232         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
8233
8234         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
8235         simplify and speed up the local register allocator. Also rename some fields
8236         like iassign->vassign.
8237         
8238         * regalloc.c: Remove some functions which are no longer used since their
8239         inlined version is in mini-codegen.c.
8240         
8241         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
8242
8243         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
8244
8245 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
8246
8247         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
8248         narrowing. Fixes #80622.
8249
8250         * iltests.il: Add new regresssion test. 
8251
8252 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8253
8254         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
8255         debug-debugger.c, debug-debugger.h: warning fixes.
8256         * driver.c: updated copyright year and made it fit in one line.
8257
8258 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
8259
8260         * aot-runtime.c: updated to use mono-dl instead of gmodule.
8261
8262 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
8263
8264         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
8265
8266         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
8267
8268         * iltests.il: Add new test for bug #80507.
8269
8270 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8271
8272         * mini-arm.h: use soft-float also on vfp for now.
8273
8274 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8275
8276         * mini.c: fix some more soft-float issues.
8277
8278 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
8279
8280         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
8281
8282 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
8283         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
8284         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
8285         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
8286
8287 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
8288
8289         * mini-arm.c: typo fix.
8290
8291 2007-01-23  Neale Ferguson <neale@sinenomine.net>
8292
8293         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
8294
8295 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
8296
8297         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
8298         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
8299
8300         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
8301
8302         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
8303
8304         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
8305         
8306         * inssel.brg: Fix a warning.
8307
8308         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
8309
8310         * abcremoval.c ssa.c ssapre.c: Update after this change.
8311         
8312         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
8313
8314         * dominators.c (df_set): Use mono_bitset_union_fast.    
8315
8316 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8317
8318         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
8319         mini-codegen.c: reduce relocations and memory usage for the cpu
8320         description.
8321
8322 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
8323
8324         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
8325
8326         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
8327         to reduce their size.
8328
8329 2007-01-19 Mark Mason <mason@broadcom.com>
8330
8331         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
8332         * mini-mips.c: more configuration macros, support long conditional branches, additional
8333         asserts, fix epilog instrumentation.
8334         * mini-mips.h: use standard stack walk
8335         * cpu-mips.md: increase size of div, rem and conditional branches
8336         
8337 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
8338
8339         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
8340         to cpu spec data.
8341
8342 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
8343
8344         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
8345         (compile_method): Ditto.
8346
8347         * aot-runtime.c (decode_klass_info): Ditto.
8348
8349         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
8350         needed by the code generated by inssel.brg. Also fix a warning.
8351
8352 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
8353
8354         * mini.c: deal with enums that become genericinsts by
8355         being nested in a generic class (bug #79956).
8356
8357 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8358
8359         * mini.c: match the generic definition to check for
8360         private access with generic types (bug #78431).
8361
8362 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
8363
8364         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
8365         to make life easier for people cross-compiling that insist on not
8366         using scratchbox.
8367
8368 2007-01-17 Mark Mason <mason@broadcom.com>
8369
8370         * inssel-long.brg: patch to deal with mips missing flags
8371         * inssel-long32-mips.brg: implement overflow checks
8372         * insset-mips.brg: implement overflow checks
8373         * mini-mips.h: implement conditional exception handling
8374         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
8375           Remove unused code, minor cleanups.
8376         * exceptions-mips.c: minor cleanups
8377         * mini-ops.h: add mips conditional exception ops
8378         * cpu-mips.md: add mips conditional exception ops
8379
8380         
8381 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8382
8383         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
8384         to deal with mips missing of flags.
8385
8386 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8387
8388         * exceptions-ppc.c: execute fault handlers.
8389
8390 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
8391
8392         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
8393
8394 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
8395
8396         * mini.c: handle also floating point values in initialize_array.
8397
8398 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8399
8400         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
8401         array initialization and make it conditional on the intrins option.
8402
8403 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8404
8405         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
8406         relocations and put the patch info names close to the enum definition.
8407
8408 2007-01-15 Mark Mason <mason@broadcom.com>
8409
8410         * basic.cs, exceptions.cs: break up large tests to increase debugability.
8411
8412 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8413
8414         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
8415
8416 2007-01-12  Raja R Harinath  <rharinath@novell.com>
8417
8418         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
8419
8420 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
8421
8422         * Makefile.am: distribute the mips sources.
8423
8424 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8425
8426         * mini-codegen.h: handle bug #80489 here, by excluding ecx
8427         directly.
8428
8429 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
8430
8431         * cpu-x86.md: back out for now as this triggers other regressions.
8432
8433 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8434
8435         * cpu-x86.md: force src1 and dest regpair for long shift instructions
8436         to eax:edx, so ecx can't get allocated to them (bug #80489).
8437
8438 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
8439
8440         * mini.c, mini-exceptions.c: enabled running fault handlers
8441         (bug #80469).
8442
8443 2007-01-03  Miguel de Icaza  <miguel@novell.com>
8444
8445         * driver.c: If nothing fail, do not use the string "failed",
8446         because it makes it very annoying to view test result logs on the
8447         web. 
8448
8449 2006-12-30  Miguel de Icaza  <miguel@novell.com>
8450
8451         * debug-debugger.c (mono_debugger_main): Rename "main" to
8452         "main_method" to prevent a warning.
8453
8454         Remove a warning for unused field.
8455
8456 2006-12-28  Martin Baulig  <martin@ximian.com>
8457
8458         * debug-debugger.c
8459         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
8460
8461 2006-12-22  Martin Baulig  <martin@ximian.com>
8462
8463         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
8464         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
8465         seperate `.mdb_debug_info' section, so we can access it from the
8466         debugger even if the binary is stripped.
8467
8468         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
8469         from the `.mdb_debug_info' here to prevent the linker from
8470         removing that section.
8471
8472         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
8473         mdb-debug-info64.s.
8474
8475 2006-12-19  Robert Jordan  <robertj@gmx.net>
8476
8477         * mini-x86: enable the code to return small structures in
8478         registers for FreeBSD as well. Fixes bug #80278.
8479         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
8480
8481 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8482
8483         * mini-x86.c: align the stack when calling the profiler
8484         function instrumenting the prolog (on OSX).
8485
8486 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
8487
8488         * mini.c: emit a break opcode where Debugger.Break () is called.
8489
8490 2006-12-13  Miguel de Icaza  <miguel@novell.com>
8491
8492         * mini.c (mono_method_to_ir): Provide useful information on this
8493         assert, to prevent others from debugging like I did.
8494
8495 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8496
8497         * mini.c: enable code which was incorrectly commented
8498         (bug #80235).
8499
8500 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8501
8502         * mini-x86.c: enable on OSX, too, the code to return small
8503         structures in registers.
8504
8505 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
8506
8507         * mini-x86.c: remove the use of the dynamic code manager here, too.
8508
8509 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
8510
8511         * mini.h, debug-debugger.c, tramp-*.c: fixed 
8512         mono_debugger_create_notification_function() to use
8513         mono_global_codeman_reserve () instead of a dynamic code manager.
8514
8515 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
8516
8517         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
8518         ves_array_element_address() jit icall and use a generated
8519         managed method instead (which is about 4 times faster for a rank 3
8520         array access).
8521
8522 2006-11-29  Mark Mason  <mason@broadcom.com>
8523
8524         * basic-calls.cs: additional tests for passing
8525         structures as function arguments.
8526
8527 2006-11-29  Mark Mason  <mason@broadcom.com>
8528
8529         * mini-mips.h: disable custom exception handling
8530         * mini-mips.c: throw/rethrow should use jalr to call
8531         exception stubs.  Fixed bug with passing structures
8532         by value. More support for tracing floating point
8533         functions.
8534
8535 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8536
8537         * mini.c: fixed typo in the soft-float ldind.r4 handling
8538         (bug #80086).
8539
8540 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8541
8542         * mini.c, mini.h, driver.c: added --runtime command line
8543         option to select a different runtime than the autodetected one.
8544         * jit.h: added API for embedders to initialize with a specific
8545         runtime version.
8546
8547 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
8548
8549         * mini.c: handle also boxing of r4 values (bug #80024).
8550
8551 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
8552
8553         * mini-ppc.c: force indirect calls until we reserve
8554         enough address space for all the generated code.
8555
8556 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
8557
8558         * exceptions-arm.c: workaround bugs in the libc definition
8559         of struct ucontext.
8560
8561 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
8562
8563         * inssel.brg: fixes from me and Mark Mason.
8564
8565 2006-11-23  Dick Porter  <dick@ximian.com>
8566
8567         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
8568         semaphore display now we've fixed the initial value
8569
8570 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8571
8572         * inssel.brg: partially revert the last change to fix the build.
8573
8574 2006-11-21  Mark Mason  <mason@broadcom.com>
8575
8576         * inssel.brg: Add and use compare-and-branch macros to support
8577         architectures that do not have condition code registers (ie. MIPS).
8578         * *-mips.{c,brg,md}: Fix copyright statements
8579
8580 2006-11-20  Mark Mason  <mason@broadcom.com>
8581
8582         * Makefile.am: remove mini-codegen.c from list of MIPS sources
8583         * mini.c: Allow GET_CONTEXT to be specified by the arch port
8584         * mini.h: Added declaration for mono_print_ins()
8585         * mini-codegen.c: added ins_spec initializer for MIPS
8586         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
8587         vreg to be virtual and hreg to be non-virtual.
8588         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
8589         is not yet working/implemented correctly.
8590         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
8591         non-static, fixup calls to print_ins() from other parts in the file.
8592
8593 2006-11-20  Mark Mason  <mason@broadcom.com>
8594
8595         * basic-calls.cs: added tests for passing structures as arguments
8596         to calls.
8597
8598 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
8599
8600         * inssel-long32.brg: optimize signed division by power of two.
8601
8602 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
8603
8604         * mini-arm.c: added support for interworking with thumb code
8605         (mono must be still be built using the ARM instruction encoding).
8606
8607 2006-11-19  Miguel de Icaza  <miguel@novell.com>
8608
8609         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
8610         verifier has different rules for it.   Fixes a few verifier issues
8611         in the test suite.
8612
8613         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
8614         at the end, so people know what happened.
8615
8616 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
8617
8618         * brach-opts.c: in optimize_exception_target() make sure we
8619         are in a catch clause (fixes bug #79871).
8620
8621 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8622
8623         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
8624         more soft-float support fixes.
8625
8626 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
8627
8628         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
8629         that are passed half on the stack and half in registers.
8630
8631 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
8632
8633         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
8634         more mips integration work from Mark E Mason 
8635         <mark.e.mason@broadcom.com>.
8636
8637 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8638
8639         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
8640         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
8641         tramp-mips.c: added sources for the mips port, not
8642         integrated in the build yet. Contributed by
8643         Mark E Mason <mark.e.mason@broadcom.com>.
8644
8645 2006-11-14  Neale Ferguson <neale@sinenomine.net>
8646
8647         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
8648
8649 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8650
8651         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
8652         put the soft-float rules in its own file since it seems to
8653         break s390 compilation.
8654
8655 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8656
8657         * mini-arm.c: fixed wrnings.
8658
8659 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
8660
8661         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
8662         inssel-arm.brg: ARM support for soft-float.
8663
8664 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8665
8666         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
8667         loads and stores of 32 bit fp values.
8668
8669 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
8670
8671         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
8672
8673         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
8674         works. Fixes #79852 and #79463.
8675
8676 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8677
8678         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
8679         more soft-float support WIP and fixes.
8680
8681 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
8682
8683         * mini-arm.c: some VFP updates.
8684
8685 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
8686
8687         * mini-exceptions.c: 0 is a valid local var offset in some
8688         architectures, don't assert (bug #78508).
8689
8690 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
8691
8692         * exceptions-arm.c: fixed off by one error in stack walk code.
8693
8694 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
8695
8696         * mini.h, mini.c: more precise tracking of type load exceptions.
8697
8698 2006-11-03  Robert Jordan  <robertj@gmx.net>
8699
8700         * Makefile.am: [WIN32] Add monow.exe target.
8701         * driver.c: [WIN32] Don't detach the console when debugging.
8702         Fixes bug #79797.
8703         
8704 2006-10-30  Miguel de Icaza  <miguel@novell.com>
8705
8706         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
8707
8708 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
8709
8710         * aot-compiler.c (emit_method_info): Add a case missed earlier.
8711
8712         * driver.c (mini_regression): Fix --regression with AOT.
8713
8714         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
8715
8716 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
8717
8718         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
8719
8720         * mini-sparc.h: Don't use sigaction on sparc/linux.
8721
8722         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
8723
8724         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
8725
8726         * mini-exceptions.c: Add proper include files for getpid ().
8727
8728 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
8729
8730         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
8731         address instead of a MonoJitInfo* to avoid decoding the exception info for the
8732         method.
8733
8734         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
8735         name cache to reduce its size.
8736
8737         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8738
8739 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
8740
8741         * mini-x86.c: Save/restore the current LMF structure more efficiently using
8742         the mono_lmf TLS variable.
8743
8744         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
8745         trampoline lmf frames.  
8746
8747         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
8748
8749 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
8750
8751         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
8752         the mono_lmf TLS variable.
8753
8754         * mini-exceptions.c: Access the LMF structure through accessors.
8755
8756         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
8757         variable instead of in jit_tls->lmf.
8758
8759         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
8760         
8761         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
8762         trampoline lmf frames.
8763
8764         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
8765
8766 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
8767
8768        * mini.c trace.c mini-x86.c: Revert these too.
8769         
8770        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
8771        signature change.
8772
8773 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
8774
8775         * genmdesc.c: removed now dead code.
8776
8777 2006-10-09  Robert Jordan <robertj@gmx.net>
8778
8779         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
8780
8781 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
8782
8783         * mini.h: do not leave gaps in the opcode values.
8784
8785 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
8786
8787         * jit-icalls.h: flag functions as internal here, too.
8788
8789 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
8790
8791         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
8792         functions with the internal attribute.
8793
8794 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
8795
8796         * aot-compiler.c: fclose the file descriptor in the profile read loop.
8797
8798 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
8799
8800         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
8801         for soft-float.
8802
8803 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
8804
8805         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
8806         tail calls as on other platforms.
8807
8808         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
8809
8810         * iltests.il: Add a few tailcall tests.
8811
8812 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8813
8814         * driver.c: fix loop for old compilers (bug #79521).
8815
8816 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
8817
8818         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
8819
8820         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
8821
8822         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
8823         metadata without any code.
8824
8825         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
8826         more precise debugging information using gdb.
8827
8828 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
8829
8830         * inssel-ia64.brg: Make the helper methods static.
8831
8832 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8833
8834         * inssel-x86.brg: make the helper methods static.
8835
8836 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
8837
8838         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
8839
8840 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8841
8842         * mini.c: updates for monoburg changes.
8843         * inssel.brg: make a few helper functions static as they should.
8844
8845 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
8846
8847         * Makefile.am: Move mini-codegen.c to common_sources.
8848
8849 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8850
8851         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
8852         instructions.
8853         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
8854         mini-ppc.h: port to use the common local register allocator.
8855
8856 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8857
8858         * mini.h: Remove the comment too then.
8859
8860 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
8861
8862         * mini.h: put back backend.data which is to be used shortly and
8863         doesn't increase the size of MonoInst. If any 64 bit arch aligned
8864         pointers on 4 byte boundaries it'd have much bigger issues running
8865         and you can ifdef it out anyway.
8866
8867 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8868
8869         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
8870         MonoInst size by 4 bytes on 64 bit machines.
8871
8872 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
8873
8874         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
8875         replacement with more meaningful field names. Arch maintainers, please
8876         check the assigned names are good enough for your arch.
8877
8878 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8879
8880         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
8881         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
8882
8883 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8884
8885         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
8886         relocations and memory requirements, put the optimization flags
8887         definitions in their own file.
8888
8889 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
8890
8891         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
8892
8893         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
8894
8895 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
8896
8897         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
8898
8899 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
8900
8901         * inssel.brg: use the correct function to get the size of an item
8902         in an array, given an element class.
8903         * aot-compiler.c: do not access class->class_size directly.
8904
8905 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8906
8907         * mini.h, debug-mini.c: added a debugging function to print
8908         info about local variables and arguments in a jitted method.
8909
8910 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
8911
8912         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
8913
8914         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
8915
8916 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8917
8918         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
8919         inner and outer loops when passing vtypes.
8920
8921 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
8922
8923         * mini-ppc.c: take into account the cpu errata for cache flushing
8924         which caused some random errors (bug #79381).
8925
8926 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8927
8928         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
8929         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
8930
8931 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
8932
8933         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
8934         loaded.
8935
8936         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
8937         freebsd ports tree.
8938
8939         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
8940         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
8941
8942         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
8943         displacement.
8944
8945 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
8946
8947         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
8948
8949 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
8950
8951         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
8952         macro does not have to be changed during debugging.
8953
8954         * 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>.
8955
8956         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
8957
8958         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
8959         
8960         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
8961         MONO_ARCH_NO_EMULATE_MUL is defined.
8962
8963         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
8964
8965         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
8966
8967         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
8968
8969         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
8970         
8971 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
8972
8973         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
8974         stuff to mini-exceptions.c where it is used.
8975
8976         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
8977         setup code, the real one is in mini-exceptions.c.
8978
8979         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
8980         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
8981         some changes from the freebsd ports tree.
8982
8983         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
8984         constants.
8985         
8986         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
8987
8988 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
8989
8990         * mini.c: on Linux, check for /proc to be mounted
8991         (bug# 79351, novell bug#201204).
8992
8993 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
8994
8995         * mini.c: handle cases where pthread_attr_getstack() behaves
8996         incorrectly (bug #78096).
8997
8998 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
8999
9000         * mini-arm.c: support larger stack frames (bug #79272).
9001
9002 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
9003
9004         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
9005
9006         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
9007         tokens.
9008
9009         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
9010         mono_class_from_name () to find a class from its name.
9011
9012         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
9013
9014 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
9015
9016         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
9017
9018 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
9019
9020         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
9021
9022 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
9023
9024         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
9025         callinfo->trampoline.
9026
9027         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
9028         fixes #79271.
9029         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
9030         future.
9031
9032 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
9033
9034         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
9035
9036 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
9037
9038         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
9039         stats.method_trampolines, it is already done by the generic trampoline code.
9040
9041         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
9042         
9043 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
9044
9045         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
9046
9047         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
9048
9049         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
9050
9051         * mini.c (print_jit_stats): Print mscorlib mempool size too.
9052         
9053         * mini.c (print_jit_stats): Print new stats.
9054
9055         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
9056
9057 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
9058
9059         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
9060         Address on two dimensional arrays. Fixes #78729.
9061
9062         * mini.h (MonoCompile): Add a 'skip_visibility' field.
9063
9064         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
9065         a method.
9066
9067         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
9068
9069         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
9070         #79130.
9071         
9072         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
9073         a race condition.
9074         (mini_get_ldelema_ins): Ditto.
9075
9076 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
9077
9078         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
9079         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
9080         Fixes #79213.
9081
9082 2006-08-29 Neale Ferguson <neale@sinenomine.net>
9083
9084         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
9085         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
9086
9087         * exceptions-s390x.c: Cosmetic change.
9088
9089         * tramp-s390.c: Fix warning.
9090
9091         * cpu-s390.md: Correct length of mul_imm.
9092
9093 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
9094
9095         * aot-compiler.c: added binary writer with ELF backend
9096         implementation (only on Linux/x86 for now).
9097
9098 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
9099
9100         * Makefile.am: Don't run net 2.0 AOT tests.
9101
9102         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
9103         (mono_compile_assembly): Skip net 2.0 assemblies as well.
9104
9105         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
9106
9107 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9108
9109         * aot-compiler.c: simplified and refactored the asm-writing code
9110         to allow different backends.
9111
9112 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
9113
9114         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9115
9116         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
9117         little. Share patches of type TYPE_FROM_HANDLE as well.
9118
9119         * mini.c (mono_patch_info_equal): New helper function.
9120         (mono_patch_info_hash): Ditto.
9121
9122         * aot-compiler.c (emit_method_code): Fix s390 build.
9123
9124         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
9125         is not handled because it is stored as a flag and not as a type ctor. Fixes
9126         #79016.
9127
9128 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
9129
9130         * aot-compiler.c: Fix computation of GOT slot statistics.
9131         
9132         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
9133         Also remove support for not PIC AOT.
9134
9135         * mini.h: Bump AOT file format version.
9136
9137         * objects.cs: Add a test for #78990.
9138
9139         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
9140         (peter.dettman@iinet.net.au). Fixes #79087.
9141
9142         * basic-long.cs: Add a test for the above.
9143
9144 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
9145
9146         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
9147         
9148         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
9149         code somewhat.
9150
9151 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
9152
9153         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
9154         exceptions.
9155
9156 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
9157
9158         * mini.c: Don't verify COM proxy invoke calls
9159         
9160
9161 2006-08-10  Dick Porter  <dick@ximian.com>
9162
9163         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
9164         which process is holding semaphores locked.
9165
9166 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
9167
9168         * mini-ia64.c mini-amd64.c: Fix #79027.
9169
9170         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
9171
9172         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
9173
9174         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
9175         implicit arguments in a vararg call. Fixes #79027.
9176
9177 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
9178
9179         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
9180         (mono_get_array_new_va_signature): Ditto.
9181
9182 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
9183
9184         * aot-runtime.c: Call init_plt lazily.
9185
9186         * inssel-long.brg: Fix unsigned long->int conversion.
9187
9188         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
9189
9190         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
9191         that most data is now in the .rss/.data section.
9192
9193 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
9194
9195         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
9196
9197         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
9198
9199         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
9200
9201         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
9202
9203         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
9204         virtual call. Fixes #79010.
9205
9206         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
9207         and use the result as the this argument in the real call.
9208
9209         * generics.2.cs: Add a new test for #79010.
9210         
9211 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
9212
9213         * mini-x86.c: Fix a warning.
9214
9215         * aot-compiler.c: Add a bunch of statistics.
9216
9217         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
9218
9219 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
9220
9221         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
9222
9223 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
9224
9225         * 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>.
9226
9227 2006-07-13  Miguel de Icaza  <miguel@novell.com>
9228
9229         * mini.c (mono_method_to_ir): Obtain the original method in the
9230         CIL stream and use this to perform validation.
9231
9232         Fixed: #78816
9233
9234 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
9235
9236         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
9237         (mono_arch_call_opcode): Ditto.
9238
9239         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
9240         #78826.
9241
9242         * mini.c (mono_patch_info_dup_mp): New helper function.
9243         
9244         * aot-compiler.c (compile_method): Fix some of the memory allocated during
9245         compilation. Fixes #78827.
9246
9247 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
9248
9249         * declsec.c: Use original security informations for
9250           MONO_WRAPPER_MANAGED_TO_MANAGED.
9251
9252 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
9253
9254         * mini.c: Allow Com Interop methods/classes and
9255         don't verify COM wrapper calls
9256         
9257
9258 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
9259
9260         * inssel-long32.brg: Fix long->i4 checked conversion.
9261
9262         * exceptions.cs: Add a test for the above.
9263
9264 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
9265
9266         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
9267
9268         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
9269         leaks.
9270
9271         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
9272         #78775.
9273
9274 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
9275
9276         * mini.c: Fix solaris/x86 exception handling.
9277
9278         * Makefile.am: Get rid of $(ICU_LIBS).
9279
9280 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
9281
9282         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
9283         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
9284         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
9285
9286         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
9287
9288         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
9289         this function causes a SIGSEGV.
9290
9291 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
9292
9293         * mini.c: Remove unused solaris/x86 includes.
9294
9295 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
9296
9297         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
9298
9299 2006-06-20  Jb Evain  <jbevain@gmail.com>
9300
9301         * cpu-g4.md: fix max length of start_handler instruction.
9302
9303 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
9304         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
9305
9306 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
9307         * ssa.c: Fixed bug 78653 for SSA based deadce.
9308         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
9309         MonoInst.flags, used in SSA based deadce.
9310         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
9311         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
9312
9313 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
9314
9315         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
9316         it can end up using non executable memory on ppc64 systems
9317         running ppc32 userspace (fix from Johannes Berg).
9318
9319 2006-06-14  Dick Porter  <dick@ximian.com>
9320
9321         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
9322         4.1.1
9323
9324 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
9325         * mini.c: Made so that inline is locally disabled if it would
9326         trigger a .cctor, because too many apps depend on this behavior
9327         (which seems to be also the one of the MS CLR).
9328
9329 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
9330
9331         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
9332         No idea why this worked before.
9333
9334         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
9335         which branch to outer exception clauses since they could skip the
9336         inner finally clauses. Fixes #78633.
9337
9338         * exceptions.cs: Add a test for the above.
9339
9340         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
9341         Fixes #78629.
9342
9343         * iltests.il: Add a test for the above.
9344
9345 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
9346
9347         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
9348         after the end of a try bblock, to prevent asserts in mini_method_compile ().
9349
9350         * iltests.il: Add a test for the above.
9351
9352 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
9353
9354         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
9355         
9356         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
9357         methods as instrinsics.
9358
9359 2006-06-09  Wade Berrier <wberrier@novell.com>
9360
9361         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
9362         (simple-cee-ops.h ssapre-mini-ops.h)
9363
9364 2006-06-09  Neale Ferguson <neale@sinenomine.net>
9365
9366         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
9367         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
9368         instruction).
9369         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
9370         * cpu-s390x.md: Fix max. length values for a couple of instructions.
9371
9372 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
9373
9374         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
9375
9376 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
9377
9378         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
9379         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
9380         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
9381         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
9382         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
9383         of opcodes, so that bug 78549 should not happen again.
9384         * ssapre.c: Updated to use the renamed files.
9385
9386 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
9387
9388         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
9389         in OP_ATOMIC_EXCHANGE_I4.
9390
9391 2006-06-07  Wade Berrier <wberrier@novell.com>
9392
9393         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
9394         in mono_debugger_create_notification_function)
9395
9396 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
9397
9398         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
9399         
9400         * mini.c (type_from_stack_type): Disable some changes which do not
9401         seem to work.
9402
9403         * driver.c: Reenable opts.
9404
9405         * mini.h (MonoStackSlot): New structure to keep track of the verification state
9406         of the evaluation stack.
9407         
9408         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
9409         evaluation stack trace at entry to the bblock.
9410
9411         * mini.c (merge_stacks): New function to perform verification of stack merges.
9412         Turned off by default.
9413
9414         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
9415         STACK_MP.
9416         
9417 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
9418
9419         * local-propagation.c: Fixed bug 78549.
9420
9421 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
9422
9423         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
9424
9425 2006-06-02  Miguel de Icaza  <miguel@novell.com>
9426
9427         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
9428         tramp-arm.c, tramp-ia64.c
9429         (mono_debugger_create_notification_function): Update signature to
9430         new signature and use new protocol for creating the notification
9431         function.  
9432
9433         Should fix the build.
9434
9435 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
9436
9437         * exceptions-ppc.c (mono_jit_walk_stack)
9438         (ves_icall_get_frame_info): Fix the build
9439
9440 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
9441
9442         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
9443
9444 2006-05-31  Raja R Harinath  <rharinath@novell.com>
9445
9446         * il2tests.2.il: New file for generics CIL tests.  Add test for
9447         #78019.
9448         * Makefile.am: Update.
9449
9450         Fix #78019
9451         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
9452         to nullable types.
9453
9454 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
9455
9456         * aliasing.c: Fixed bug 78311.
9457
9458 2006-05-29  Martin Baulig  <martin@ximian.com>
9459
9460         * mini-exceptions.c (mono_find_jit_info): When computing the
9461         native offset, check whether we're actually inside the method's
9462         code; call mono_debug_print_stack_frame() to format the frame.
9463         (ves_icall_System_Exception_get_trace): Call
9464         mono_debug_print_stack_frame() to format the stack frame.
9465         (ves_icall_get_trace): Update to the new debugging API.
9466         (mono_jit_walk_stack_from_ctx): Likewise.
9467         (ves_icall_get_frame_info): Likewise.
9468
9469         * mini.c (get_method_from_ip): Use the new debugging API.
9470         (mono_print_method_from_ip): Likewise.
9471
9472         * exceptions-ppc.c
9473         (mono_jit_walk_stack): Use the new debugging API.
9474         (ves_icall_get_frame_info): Likewise.   
9475
9476 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
9477
9478         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
9479
9480 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
9481
9482         * mini.c: Added "limitator" to inline for debugging.
9483
9484 2006-05-24  Martin Baulig  <martin@ximian.com>
9485
9486         * debug-debugger.c (mono_debugger_init): Create a private,
9487         malloc()-based code manager for the notification function and
9488         intentionally leak it on exit.  This fixes the crash-on-exit race
9489         condition.
9490
9491         * tramp-amd64.c
9492         (mono_debugger_create_notification_function): Added
9493         `MonoCodeManager *' argument.
9494
9495         * tramp-x86.c
9496         (mono_debugger_create_notification_function): Added
9497         `MonoCodeManager *' argument.
9498
9499 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
9500
9501         * aliasing.c: Fixed 64 bit issue.
9502         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9503         default since all known bugs are fixed (one more time!).
9504
9505 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9506
9507         * mini.c: write barrier support.
9508
9509 2006-05-23  Martin Baulig  <martin@ximian.com>
9510
9511         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
9512         check at the top of the file.
9513
9514 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
9515
9516         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
9517         reverting changes without reason and without changelog entries.
9518
9519 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
9520
9521         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
9522         to a few opcodes. Fixes #78439.
9523
9524         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
9525         consistency with other archs.
9526
9527         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
9528
9529 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9530
9531         * debug-debugger.c: fix the build.
9532
9533 2006-05-17  Martin Baulig  <martin@ximian.com>
9534
9535         * debug-debugger.c
9536         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
9537         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
9538         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
9539         (debugger_attach): Call GC_mono_debugger_add_all_threads().
9540
9541 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
9542
9543         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
9544
9545 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
9546
9547         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
9548         MONO_TYPE_GENERICINST.
9549         
9550         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
9551         MONO_TYPE_GENERICINST.
9552
9553 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
9554
9555         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
9556         #78325.
9557
9558 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
9559
9560         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
9561         mempool.
9562         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
9563
9564 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
9565
9566         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
9567         mono_trace_cleanup ().
9568
9569         * iltests.il: Fix problem with the newly added test.
9570
9571         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
9572         due to register constraints, free up the previous hreg. Fixes #78314.
9573
9574         * iltests.il: Add new test for #78314.  
9575
9576         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
9577         Interlocked.Add. Fixes #78312.
9578
9579         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
9580         
9581 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
9582
9583         * inssel.brg (mini_emit_virtual_call): Fix a warning.
9584
9585 2006-05-05  Martin Baulig  <martin@ximian.com>
9586
9587         * debug-mini.c (mono_debug_open_block): New method.
9588
9589         * mini-amd64.c
9590         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9591         the beginning of each basic block.
9592
9593         * mini-x86.c
9594         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9595         the beginning of each basic block.
9596
9597 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9598
9599         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9600         default until I understand why they break the build on amd64.
9601
9602 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
9603
9604         * mini.c (mini_cleanup): Call mono_cleanup ().
9605
9606         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
9607         errors.
9608
9609 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9610
9611         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
9612         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9613         default since all known bugs are fixed, and I cannot reproduce bug
9614         77944... I'm asking Matt Hargett to test again after this commit.
9615
9616 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
9617
9618         * mini-codegen.c: Fixed typo that thrashed inline.
9619
9620 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
9621
9622         * dominators.c (compute_dominators): Avoid using a worklist since
9623         it is not correct in some cases. Instead, iterate over all bblocks as
9624         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
9625
9626 2006-04-28  Miguel de Icaza  <miguel@novell.com>
9627
9628         * mini.c (mono_jit_compile_method_inner): Use
9629         mono_prepare_exception_from_error that resets the value
9630         internally.
9631
9632 2006-04-27  Miguel de Icaza  <miguel@novell.com>
9633
9634         * mini.c: Move the mini_loader_error_to_exception to metadata. 
9635         
9636 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9637
9638         * aliasing.c: Fixed bug 78210.
9639
9640 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9641
9642         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9643         default until all their problems (or the ones they trigger) are fixed.
9644
9645 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
9646
9647         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
9648         
9649         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
9650         as loaded only after resolving patches since that could invoke the same method.
9651
9652         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
9653
9654         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
9655         functions.
9656
9657         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
9658         AOT loader.
9659
9660         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
9661         stack.
9662
9663         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
9664         made from AOT code through the PLT table.
9665
9666         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
9667         holding the plt offset when a call is made to the aot plt trampoline.
9668         
9669 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9670
9671         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
9672         amd64 AOT support.
9673
9674         * Makefile.am (common_sources): Fix build breakage.
9675
9676         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
9677         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
9678         intra-assembly calls if possible.
9679         
9680         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
9681
9682         * mini-trampolines.c: Handle PLT entries.
9683
9684         * mini.c: Avoid creating a GOT var for calls.
9685
9686         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
9687         from mscorlib code.
9688
9689         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
9690         from mscorlib code.
9691
9692         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
9693         AOT code.       
9694
9695         * mini.h: Bump AOT file format version.
9696         
9697         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
9698         covers more cases.
9699
9700 2006-04-25  Martin Baulig  <martin@ximian.com>
9701
9702         * driver.c: Disable copyprop, consprop and inline when running
9703         inside the debugger.
9704
9705 2006-04-25  Martin Baulig  <martin@ximian.com>
9706
9707         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
9708         with `get_current_thread' and added `detach'.
9709         (MonoDebuggerMetadataInfo): Added `thread_size',
9710         `thread_tid_offset', `thread_stack_ptr_offset' and
9711         `thread_end_stack_offset'.
9712
9713 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9714
9715         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
9716         aot-runtime.c.
9717
9718         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
9719         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
9720
9721         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
9722
9723         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
9724
9725         * aot.c: Add support for ADJUSTED_IID.  
9726
9727 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
9728
9729         * aot.c (emit_method_order): Don't align method_order_end.
9730
9731         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
9732         the interface ID changes.
9733
9734 2006-04-21  Dick Porter  <dick@ximian.com>
9735
9736         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
9737         cleaning up a thread.  Fixes the new part of bug 77470.
9738
9739 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
9740
9741         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
9742         to managed wrapper.
9743                      
9744 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
9745
9746         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
9747         
9748         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
9749         SIGSEGV. Fixes #78072.
9750
9751         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
9752         unregister our SIGABRT handler.
9753
9754 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
9755
9756         * mini.c: Disabled inline where it can alter the call stack in a
9757         way visible from managed code.
9758         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
9759         default.
9760
9761 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
9762
9763         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
9764         on other platforms. Fixes #78089.
9765
9766 2006-04-13  Martin Baulig  <martin@ximian.com>
9767
9768         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
9769         determine whether we're inside the debugger.
9770
9771         * debug-debugger.h
9772         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
9773
9774 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9775
9776         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
9777         handler clauses. Fixes #78024.
9778
9779         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
9780         in the CALL_MEMBASE opcodes. Fixes #78088.
9781         (mono_arch_get_vcall_slot_addr): Ditto.
9782
9783 2006-04-10  Martin Baulig  <martin@ximian.com>
9784
9785         * debug-debugger.c: The thread handling code has now been moved
9786         into ../metadata/threads.c.
9787
9788 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9789
9790         * driver.c (mono_main): Fix --with-gc=none build.
9791
9792         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
9793         (mono_spillvar_offset_float): Ditto.
9794         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
9795         hreg, not when its !global, since on ia64, there is a third category: stacked
9796         registers.      
9797
9798 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
9799
9800         * mini.c: set MonoInst->klass for load field address and a few other
9801         places.
9802
9803 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9804
9805         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
9806
9807 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
9808
9809         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
9810         the branch opt changes.
9811
9812 2006-04-06  Dick Porter  <dick@ximian.com>
9813
9814         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
9815         
9816         * wapihandles.c (mini_wapi_seminfo): 
9817         * driver.c (mono_main): Add semaphore info option
9818
9819 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
9820
9821         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
9822         branch optimization changes. Fixes #78009.
9823
9824 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9825
9826         * mini.c: ignore accessibility of methods in managed->native wrappers.
9827
9828 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
9829
9830         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
9831         
9832         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
9833
9834 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
9835
9836         * mini.c: Modify the branch optimizations to preserve the invariant that
9837         the entries inside the in_bb and out_bb arrays are unique.
9838         (mono_unlink_bblock): Avoid creation of new arrays.
9839
9840 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
9841
9842         * mini.c (mono_unlink_bblock): Fix regression caused by previous
9843         change (#77992).
9844
9845 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
9846
9847         * mini.c (optimize_branches): Remove the "optimizations" in
9848         the cbranch1/cbranch2 -> branch cases which were causing several
9849         problems in the past. Fixes #77986.
9850
9851 2006-03-31  Chris Toshok  <toshok@ximian.com>
9852
9853         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
9854         default optimizations :(
9855
9856 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
9857
9858         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
9859         branch.
9860
9861 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
9862
9863         * local-propagation.c: Added comments to structs and removed
9864         "Mono" prefixes from local tree mover types.
9865
9866 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
9867
9868         * Makefile.am (arch_sources): Define this for each architecture so 
9869         libmono_la_SOURCES is defined in one place.
9870
9871 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
9872
9873         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
9874         from handles/.
9875
9876 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
9877
9878         * driver.c: print the GC name supplied by configure.
9879
9880 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
9881
9882         * local-propagation.c: Added tree mover, and moved here all the
9883         local propagation code from mini.c
9884         * mini.c: Added support for treeprop, and moved all the local
9885         propagation code to local-propagation.c
9886         * mini.h: Added support for treeprop
9887         * driver.c: Added support for treeprop, enabled consprop, copyprop,
9888         treeprop, inline and deadce by default
9889         * Makefile.am: Added local-propagation.c
9890
9891 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
9892
9893         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
9894
9895 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
9896
9897         * debug-debugger.c: make it compile without the Boehm GC.
9898
9899 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
9900
9901         * mini.c: fixed issue with mismatch when an icall is registered
9902         with multiple names but same address.
9903
9904 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
9905
9906         * declsec.c, mini-exceptions.c: use write barrier to set reference
9907         fields of managed objects.
9908
9909 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9910
9911         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
9912         (can_access_internals): Fix a warning.
9913
9914         * mini.c (print_method_from_ip): Rename this to 
9915         mono_print_method_from_ip so it gets exported.
9916
9917         * trace.c: Deal with strings inside StringBuilder's containing garbage
9918         and fix memory leaks. Fixes #77848.
9919
9920 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9921
9922         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
9923         fixes #77787.
9924
9925 2006-03-16 Neale Ferguson <neale@sinenomine.net>
9926         
9927         * mini-s390.c: Remove OP_X86_TEST_NULL.
9928
9929 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
9930
9931         * mini.c: use the correct GetHashCode() for the moving collector.
9932
9933 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
9934
9935         * liveness.c: Regalloc spill cost tuning.
9936
9937 2006-03-15 Neale Ferguson <neale@sinenomine.net>
9938         
9939         * mini-s390x.h: Correct S390_LONG macro.
9940
9941         * mini-s390x.c: Cleanup unused code.
9942
9943 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
9944
9945         * jit-icalls.h: New file.
9946
9947         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
9948         icalls and include that instead of including jit-icalls.c.
9949
9950         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
9951         OP_X86 opcodes.
9952
9953 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
9954
9955         * mini.c: when checking for member accessibility, also check for
9956         friend assemblies and for explicit interface implementations.
9957
9958 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
9959
9960         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
9961
9962         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
9963
9964         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
9965         common cases are done first.    
9966
9967         * mini-ops.h: Only define platform specific opcodes on the given platform.
9968
9969         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
9970         branch.
9971         
9972 2006-03-14  Martin Baulig  <martin@ximian.com>
9973
9974         Revert Paolo's change from r57348:
9975
9976         * mini.h: don't use gboolean for bitfields.
9977         * mini.c: verifier changes for fields and methods accessibility.
9978
9979 2006-03-13  Neale Ferguson <neale@sinenomine.net>
9980
9981         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
9982
9983         * mini-s390x.c: Fix conv_r_un.
9984
9985         * cpu-s390, cpu-s390x.md: Fix lengths.
9986
9987 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
9988
9989         * mini.c: nested types have access to all the nesting
9990         levels, not just the enclosing types.
9991
9992 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
9993
9994         * mini.c: added a few more verification checks.
9995
9996 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
9997
9998         * liveness.c: Merge optimizations from the linear-il branch.
9999
10000 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
10001
10002         * mini-ia64.c (emit_call): Add a comment.
10003
10004         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
10005
10006         * tramp-ia64.c: Fix some warnings.
10007
10008 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
10009
10010         * mini.h: don't use gboolean for bitfields.
10011         * mini.c: verifier changes for fields and methods accessibility.
10012
10013 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
10014
10015         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
10016         lazy icall wrapper changes.
10017
10018         * dominators.c: Replace all the dominator algorithms with faster
10019         ones from the linear-il branch.
10020
10021         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
10022         the mempool.
10023
10024         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
10025         common cases are done first.
10026
10027         * mini-amd64.c: Fix some warnings.
10028
10029         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
10030         from the mempool.
10031
10032         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
10033         added code.
10034
10035         * mini.h: Add a missing prototype.
10036
10037 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
10038
10039         * mini.c: Compile icall wrappers lazily.
10040
10041         * mini-codegen.c: Use printf instead of g_print since its much faster.
10042
10043         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
10044         function.
10045
10046         * mini.c (optimize_branches): Cache the negative result from 
10047         remove_block_if_useless ().
10048
10049         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
10050         Also fix some bblock linking issues.
10051
10052         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
10053         assembly files.
10054
10055         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
10056
10057         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
10058         accessed fields first, for better cache behavior.
10059         
10060 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10061
10062         * mini.c: speedup IList<T> array accesses.
10063
10064 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
10065
10066         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
10067         inline_costs counter. Fixes #77190.
10068
10069 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
10070
10071         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
10072         trace messages. Fixes #77706.
10073
10074 2006-03-04  Martin Baulig  <martin@ximian.com>
10075
10076         * tramp-amd64.c, tramp-x86.c
10077         (mono_debugger_create_notification_function): Use
10078         mono_global_codeman_reserve() to allocate a buffer at runtime and
10079         return it.
10080
10081         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
10082
10083         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
10084         notification function at runtime and then call `initialize' in the
10085         `MONO_DEBUGGER__debugger_info' vtable.
10086
10087 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
10088
10089         * iltests.il: Fix a visibility problem.
10090
10091 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
10092
10093         * driver.c, mini.c: add hooks for the counters API.
10094
10095 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
10096
10097         * driver.c: show disabled options.
10098
10099 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10100
10101         * linear-scan.c: always use cost-driven selection.
10102
10103 2006-02-28  Raja R Harinath  <rharinath@novell.com>
10104
10105         * jit-icalls.c (helper_compile_generic_method): Revert change from
10106         2006-02-24.
10107
10108 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
10109
10110         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
10111
10112 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
10113
10114         * inssel.brg: style fixes, mostly to force the updated monoburg
10115         to run for people using svn.
10116
10117 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
10118
10119         * mini.c: match monoburg changes.
10120
10121 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10122
10123         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
10124         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
10125         declaration in the header file.
10126
10127 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
10128
10129         * helpers.c: reduce relocations and mem usage.
10130
10131 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
10132
10133         * mini.h, mini-codegen.c: disable logging features if
10134         requested by configure.
10135
10136 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
10137
10138         * mini.c: tiny verifier changes.
10139
10140 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10141
10142         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
10143         cpu-pentium.md: stack alignment changes for osx/x86,
10144         partially from Geoff Norton <gnorton@customerdna.com>.
10145
10146 2006-02-24  Raja R Harinath  <harinath@gmail.com>
10147
10148         * jit-icalls.c (helper_compile_generic_method): Update to changes
10149         in metadata/class.c.
10150
10151 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
10152         
10153         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
10154         
10155         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
10156         interface calls with large offsets.
10157
10158 2006-02-23  Raja R Harinath  <rharinath@novell.com>
10159
10160         * jit-icalls.c (helper_compile_generic_method): Document the
10161         special-case we depend on so that we can inflate the method twice
10162         with the same context with no bad side-effects.
10163
10164 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
10165
10166         * mini-x86.c, mini-amd64.c: fix for case when xen support
10167         is disabled.
10168
10169 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
10170
10171         * mini-x86.c, mini-amd64.c: generate code to access tls items
10172         in a faster way for Xen systems.
10173
10174 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
10175
10176         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
10177         updates and compilation fixes for the OSX/x86 port, mostly from
10178         Geoff Norton <gnorton@customerdna.com>.
10179
10180 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10181
10182         * inssel.brg: faster interface call implementation
10183         to sync with the interface_offsets MonoVTable changes.
10184
10185 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
10186
10187         * mini.c: more verification checks.
10188
10189 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
10190
10191         * mini.c: added a few more verification checks.
10192
10193 2006-02-17      Neale Ferguson <neale@sinenomine.net>
10194
10195         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
10196         facility on the processor and use it if available.
10197
10198 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10199
10200         * driver.c, aot.c, mini.c: throw exception if the IL code is
10201         invalid or unverifiable.
10202
10203 2006-02-17  Raja R Harinath  <rharinath@novell.com>
10204
10205         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
10206         m.StructField.
10207
10208 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
10209
10210         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
10211
10212 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10213
10214         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
10215         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
10216         handling of instantiated generic valuetypes.
10217
10218 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
10219
10220         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
10221         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
10222         instead.
10223
10224         * generics.2.cs: Revert the nullable reftypes tests.
10225
10226 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
10227
10228         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
10229         using __builtin_frame_address (1) as it doesn't work in the presence
10230         of optimizations. Hopefully fixes #77273.
10231
10232         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
10233         -> generics.cs change as it doesn't work with some automake versions.
10234
10235 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10236
10237         * mini.c: handle systems that sue a different way to
10238         retrieve the stack address of the current thread.
10239
10240 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
10241
10242         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
10243         it specially in the makefile.
10244
10245         * generics.2.cs: Add tests for nullable reference types.
10246
10247 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10248
10249         * mini.c: always handle the case when mono_jit_init()
10250         is called in a thread different from the main thread,
10251         confusing libgc (bug #77309).
10252
10253 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
10254
10255         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
10256
10257 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10258
10259         * mini.c: change optimize_branches () to use a single loop
10260         and introduce a new optimization to simplify some range checks.
10261
10262 2006-02-03  Martin Baulig  <martin@ximian.com>
10263
10264         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
10265         and merged with debugger_thread_manager_add_thread().
10266         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
10267         inform the debugger about the main thread.
10268
10269 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
10270
10271         * basic.cs: Add test for div.un/rem.un constant folding.
10272
10273 2006-02-03  Neale Ferguson <neale@sinenomine.net>
10274
10275         * cpu-s390x.md: correct int_xor_imm length
10276
10277 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
10278
10279         * generics.2.cs: New test for #77442.
10280
10281         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
10282         #77442.
10283
10284 2006-02-02  Martin Baulig  <martin@ximian.com>
10285
10286         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
10287         <mono/metadata/mono-debug-debugger.h>   
10288
10289         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
10290
10291 2006-02-02  Martin Baulig  <martin@ximian.com>
10292
10293         * debug-debugger.h: New header file for debug-debugger.c.
10294
10295         * debug-debugger.c: Big API cleanup; don't run the managed Main()
10296         function is a separate thread anymore; add support for attaching.
10297
10298 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
10299
10300         * tramp-x86.c: Fix a warning.
10301
10302 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
10303
10304         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
10305         on very large methods.
10306
10307         * aot.c (load_patch_info): Fix a warning.
10308
10309 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
10310
10311         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
10312         mini-ops.h: alu membase optimizations.
10313
10314 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
10315
10316         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
10317         to speedup StringBuilder.
10318
10319 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
10320
10321         * dominators.c (mono_compute_natural_loops): Fix detection of
10322         loop body start blocks.
10323
10324         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
10325
10326 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
10327
10328         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
10329         #75145.
10330
10331 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
10332
10333         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10334
10335 2006-01-25  Martin Baulig  <martin@ximian.com>
10336
10337         * debug-debugger.c: Moved the `MonoDebuggerManager' and
10338         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
10339         started to cleanup this file a little bit.
10340
10341 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
10342
10343         * mini.c: optimize a codepath frequently happening in generics code.
10344
10345 2006-01-23  Martin Baulig  <martin@ximian.com>
10346
10347         * Makefile.am: Only compile debug-debugger.c on supported platforms.
10348
10349         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
10350         functions directly.
10351
10352         * driver.c: debug-debugger.c is only available if
10353         `MONO_DEBUGGER_SUPPORTED' is defined.   
10354
10355 2006-01-23  Martin Baulig  <martin@ximian.com>
10356
10357         * debug-debugger.c: Only enable this on platforms where the Mono
10358         Debugger is working (x86 and x86_64).
10359
10360 2006-01-21  Martin Baulig  <martin@ximian.com>
10361
10362         The Mono Debugger is now using the normal `mono' instead of the
10363         `mono-debugger-mini-wrapper' when executing managed code.
10364
10365         * debug-debugger.c: New file; previously known as
10366         debugger/wrapper/wrapper.c.
10367
10368         * debug-mini.c (mono_init_debugger): Removed.
10369
10370         * driver.c (mono_main): Added new `--inside-mdb' command line
10371         argument which is used when running inside the debugger.
10372
10373 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
10374
10375         * liveness.c (mono_analyze_liveness): Remove some unused data
10376         structures.
10377
10378 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
10381
10382 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
10383
10384         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
10385         depends on implementation details of monobitset.
10386
10387         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
10388         Fixes #77271.
10389
10390 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
10391
10392         * liveness.c: Update after monobitset changes.
10393
10394 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
10395
10396         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
10397
10398 2006-01-11 Neale Ferguson <neale@sinenomine.net>
10399
10400         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
10401
10402         * mini-s390x.c: Remove warning messages.
10403
10404 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
10405
10406         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
10407
10408 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
10409
10410         * generics.2.cs: Add ldelem/stelem_any test.
10411
10412 2006-01-10 Neale Ferguson <neale@sinenomine.net>
10413
10414         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
10415
10416 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
10417
10418         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
10419         
10420 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
10421
10422         * generics.2.cs: Reenable vtype tests.
10423
10424         * inssel-x86.brg: Remove an icorrect valuetype rule.
10425
10426 2006-01-06 Neale Ferguson <neale@sinenomine.net>
10427
10428         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
10429         initial support for OP_ABS.
10430
10431 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10432
10433         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
10434
10435 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10436
10437         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
10438         conversion and implement LADD/LSUB.
10439
10440         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
10441         architectures.
10442
10443 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10444
10445         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
10446
10447         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
10448         architectures.
10449
10450 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10451
10452         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
10453         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
10454         (stack walk problem).
10455
10456 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
10457
10458         * aot.c (mono_aot_load_method): Fix a warning.
10459
10460 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10461
10462         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
10463
10464 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10465
10466         * iltests.il: Add test for #77148.
10467
10468         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
10469         #77148.
10470
10471 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10472
10473         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
10474
10475 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10476
10477         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
10478         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
10479
10480         * basic-long.cs: Add lconv-to-r4/r8 tests.
10481
10482 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10483
10484         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
10485
10486         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
10487         here as on other archs.
10488
10489 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10490
10491         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
10492
10493 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10494
10495         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
10496         
10497         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
10498
10499         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
10500         instrument_prolog; Add memory_barrier instruction.
10501
10502 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
10503
10504         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
10505
10506 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
10507
10508         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
10509
10510         * aliasing.c inssel.brg: Fix warnings.
10511
10512         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
10513         could skip initialization of some parts of memory.
10514
10515         * mini.c mini-ia64.c: Fix warnings.
10516
10517         * inssel-sparc.brg: Add an implementation of lneg which actually works.
10518
10519 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
10520
10521         * aliasing.c (mono_build_aliasing_information): Add a workaround for
10522         a crash seen on sparc.
10523
10524         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
10525         
10526         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
10527
10528 2005-12-21 Neale Ferguson <neale@sinenomine.net>
10529
10530         * mini-ops.h: Add s390_backchain instruction
10531
10532         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
10533
10534         * cpu-s390.md: Add s390_backchain instruction
10535
10536         * mini-s390.c: Significant ABI changes
10537
10538         * mini-s390.h: Cater for zero length structures
10539
10540 2005-12-20 Neale Ferguson <neale@sinenomine.net>
10541
10542         * mini-s390.c: ABI fixes
10543
10544         * inssel-s390.brg: Remove debug statements
10545
10546         * cpu-s390.md: Fix length of ATOMIC_xx operations
10547
10548 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
10549
10550         * basic-float.cs: Add float<->long conversion tests.
10551
10552 2005-12-16 Neale Ferguson <neale@sinenomine.net>
10553
10554         * mini-s390.c: Fix LOCALLOC processing.
10555
10556         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
10557
10558 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
10559
10560         * iltests.il: Add tests for some opcodes not covered by the other
10561         tests.
10562
10563 2005-12-15 Neale Ferguson <neale@sinenomine.net>
10564
10565         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
10566         register loading for Tail processing; Correct trace output.
10567
10568         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
10569
10570         * cpu-s390.md: Correct size of jmp instruction. 
10571
10572 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10573
10574         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
10575
10576 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10577
10578         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
10579           Bring s390 up to current level.
10580
10581 2005-12-12  Zltan Varga  <vargaz@gmail.com>
10582
10583         * generics.2.cs: Disable the newly added tests as they do not work yet.
10584         
10585         * generics.2.cs: Add valuetype tests.
10586
10587 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
10588
10589         * basic-long.cs: Add i4->u8 test.
10590
10591         * objects.cs: Add tests for JIT intrinsic.
10592
10593         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
10594         optimizations lost by a mistake.
10595
10596 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
10597
10598         * basic-long.cs: Remove a test moved to objects.cs.
10599
10600         * arrays.cs: Add more array tests.
10601
10602 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
10603
10604         * arrays.cs: Add new tests for multi-dimensional arrays.
10605
10606 2005-12-06  Raja R Harinath  <rharinath@novell.com>
10607
10608         * Makefile.am (test_sources2): Add generics.2.cs.
10609         (EXTRA_DIST): Add test_sources2.
10610
10611 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
10612
10613         Support for boxing and unboxing nullable types as well as the
10614         isinst operation on nullables, per the CLI ammendment.
10615
10616         * inssel.brg (CEE_ISINST): Special case for nullable
10617
10618         * mini.c (handle_unbox_nullable): new method
10619         (handle_box): Special case for nullable types
10620         (mono_method_to_ir): Call handle_unbox_nullable in correct
10621         places.
10622
10623         * generics.2.cs: New test suite
10624
10625         * Makefile.am: Support for regression tests with generics.
10626
10627 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
10628
10629         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
10630         allocated to registers. Fixes #76800.
10631
10632 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
10633
10634         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
10635
10636 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
10637
10638         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
10639         of platforms.
10640
10641 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
10642
10643         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
10644         objects.cs.
10645
10646         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
10647         
10648         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
10649 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
10650
10651         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
10652         single precision before storing to a single precision location.
10653
10654 2005-11-28  Raja R Harinath  <rharinath@novell.com>
10655
10656         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
10657
10658 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
10659
10660         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
10661         correct files.
10662
10663         * basic.cs: Remove test_0_byte_compares test which was moved to
10664         objects.cs a long time ago.
10665
10666 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
10667
10668         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10669
10670 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
10671
10672         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
10673         handlers are called.
10674
10675         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
10676         throwing code.
10677
10678          * mini-ia64.c: Add support for the throw->branch exception 
10679         optimization.   
10680
10681         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
10682
10683 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10684
10685         * mini.c: Enabled "fastpath" deadce :-)
10686         
10687 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10688
10689         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
10690         alias analysis pass to support it.
10691         * mini.h: Likewise.
10692         * ssa.c: Likewise.
10693         * liveness.c: Likewise (liveness computation can use aliasing
10694         information to be more accurate).
10695         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
10696         moreover made so that "--compile-all" uses the given optimization
10697         flags and not the default ones.
10698         * aliasing.c: Alias analysis (new file).
10699         * aliasing.h: Likewise.
10700         * Makefile.am: added "aliasing.c" and "aliasing.h".
10701         
10702 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
10703
10704         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
10705         OP_L opcodes.
10706
10707 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
10708
10709         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
10710         fp >= end_of_stack exit condition, as it is not needed, and it might
10711         become true for fp eliminated frames.
10712
10713 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10714
10715         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
10716         coded offsets.
10717
10718 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
10719
10720         * mini-arm.c: fixed alignment of doubles/longs to match
10721         the C ABI (bug #76635).
10722
10723 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
10724
10725         * aot.c: fix compilation with --enable-minimal=aot.
10726
10727 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
10728
10729         * mini-arm.c: fixed compatibility with the new
10730         floating point emulator package for compares.
10731
10732 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
10733
10734         * mini.c : reverted sig->pinvoke changes (r51396-51397).
10735
10736 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
10737
10738         * mini-exceptions.c (print_stack_frame): Output to stderr.
10739         (mono_handle_native_sigsegv): Ditto.
10740
10741 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10742
10743         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
10744         OP_LCONV_TO_OVF_I implementation.
10745
10746         * mini-amd64.c: Add support for the throw->branch exception 
10747         optimization.
10748
10749         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
10750         when the catch clause catches a more general exception, i.e. Object.
10751
10752 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
10753
10754         * cpu-ia64.md: Remove unused opcodes.
10755
10756         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
10757         specific defines for architectures defining USE_SIGACTION.
10758
10759         * mini-ia64.c: Fix some warnings.
10760
10761         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
10762         version seemed to skip a frame.
10763
10764 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10765
10766         * mini.c: Clean up the usage of sig->pinvoke flag. Now
10767         only calls which are made to native code use this flag.
10768
10769 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10770
10771         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
10772         varargs methods as well.
10773         
10774         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
10775         which have save_lmf set. Reorganize methods prologs a bit.
10776
10777         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
10778         debugger to the proper place.
10779
10780 2005-10-29  Martin Baulig  <martin@ximian.com>
10781
10782         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
10783         when running inside the debugger until the debugger has support
10784         for it.
10785
10786 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10787
10788         * mini.h: Fix a warning.
10789
10790 2005-10-24  Miguel de Icaza  <miguel@novell.com>
10791
10792         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
10793         we expose publicly, this returns the string.
10794
10795 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
10796
10797         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
10798         with fp elimination.
10799
10800 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10801
10802         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
10803         native stacktrace using the glibc 'backtrace' function if available.
10804
10805 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
10806
10807         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
10808
10809         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
10810         handle SIGSEGVs received while in native code.
10811
10812         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
10813         code, call mono_handle_native_sigsegv which will abort the runtime
10814         after printing some diagnostics, instead of converting it into a
10815         confusing NullReferenceException.
10816
10817 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10818
10819         * cpu-pentium.md: Remove unused opcodes.
10820
10821 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
10822
10823         * mini-amd64.h (MonoLMF): Add rsp field.
10824
10825         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
10826         the lmf too.
10827
10828 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
10829
10830         * mini-codegen.c (get_register_spilling): Fix some warnings.
10831
10832 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
10833
10834         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
10835         elimination during exception handling. Enable fp elimination by
10836         default.
10837
10838         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
10839         elimination.
10840
10841 2005-10-16  Martin Baulig  <martin@ximian.com>
10842
10843         * mini-exceptions.c
10844         (mono_debugger_run_finally): New public method for the debugger.
10845
10846 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10847
10848         * debug-mini.c (mono_debug_init_method): Fix warning.
10849
10850         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
10851         the 'exname' parameter const to fix some warnings.
10852
10853 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
10854
10855         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
10856         introduced by the previous patch.
10857
10858 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
10859
10860         * basic-float.cs: Add test for precision of float arithmetic.
10861
10862         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
10863         when loading/storing single values from/to memory.
10864
10865         * mini.c (mono_jit_compile_method_with_opt): Create the function
10866         pointers in the correct domain.
10867
10868 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10869
10870         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
10871         introduced by previous patch.
10872         
10873         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
10874         when out_filter_idx is NULL.
10875
10876         * mini-exceptions.c: Don't run filter clauses twice during exception
10877         handling. Fixes #75755.
10878
10879 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10880
10881         * aot.c: Add support for ldflda wrappers.
10882
10883         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
10884         #75902.
10885
10886 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
10887
10888         * mini.c, mini.h: do not consider exception handlers blocks when
10889         setting up interface variables.
10890
10891 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
10892
10893         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
10894
10895 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
10896
10897         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
10898         causes a regression.
10899
10900         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
10901
10902 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
10903
10904         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
10905         of the OP_P definitions.
10906
10907         * TODO: Add a proposal for dealing with the CEE/OP mess.
10908
10909         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
10910         optimizations from the x86 port.
10911
10912         * cpu-amd64.md: Ditto.
10913
10914         * basic.cs basic-long.cs: Add tests.
10915
10916 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
10917
10918         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
10919         Patrik Torstensson's implementation of my exception-handling
10920         optimization idea, when the exception object is not used
10921         (bug #62150).
10922
10923 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
10924
10925         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
10926         of the mul_imm optimizations from the old jit.
10927
10928 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
10929
10930         * mini.c, liveness.c: patch by Patrik Torstensson and
10931         Zoltan Varga to improve performance in methods with
10932         exception clauses.
10933
10934 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10935
10936         * driver.c: Remove 'Globalization' entry from --version.
10937
10938 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
10939
10940         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
10941         there is a profiler interested in JIT events.
10942
10943         * aot.c: Load profile files produced by the AOT profiling module, and
10944         reorder methods based on the profiling info. Add a 'method_order' table
10945         to the AOT file to make mono_aot_find_jit_info work with the reordered
10946         methods.
10947
10948         * mini.h: Bump AOT file version info.
10949
10950 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
10951
10952         * mini-arm.h: work around what looks like a gcc bug when optimizations
10953         are enabled.
10954
10955 2005-09-28  Raja R Harinath  <rharinath@novell.com>
10956
10957         * Makefile.am (AM_CFLAGS): Don't use += to append inside
10958         conditionals.  Use ...
10959         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
10960
10961 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
10962
10963         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
10964         to determine the amount of memory to copy when passing valuetypes.
10965
10966         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
10967         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
10968
10969 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
10970
10971         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
10972         information about aot.
10973
10974 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
10975
10976         * *.c: Replace the use of {Enter,Leave}CriticalSection with
10977         macros. This will allow a deadlock debugger to easily be plugged
10978         in.
10979
10980 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
10981
10982         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
10983
10984 2005-09-27  Raja R Harinath  <rharinath@novell.com>
10985
10986         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
10987         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
10988         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
10989         ($(arch_built)) [CROSS_COMPILING]: Error out.
10990
10991 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
10992
10993         * aot.c: Add support for the no_special_static flag for classes.
10994
10995 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10996
10997         * Reapply reverted patches.
10998
10999         * *: Revert r50174 as well.
11000
11001         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
11002
11003 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
11004
11005         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
11006
11007 2005-09-23  Miguel de Icaza  <miguel@novell.com>
11008
11009         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
11010         part of the SIG_HANDLER_SIGNATURE.  
11011
11012 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
11013
11014         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
11015         statistics.
11016
11017         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
11018         introduced by previous patch.
11019
11020 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
11021
11022         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
11023         saved registers too.
11024
11025         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
11026         upon the information returned by get_call_info ().
11027         
11028         * mini-x86.c (add_float): Fix stack size calculation.
11029         (mono_arch_call_opcode): Rewrite this so it works based up the
11030         information returned by get_call_info ().
11031         (mono_arch_get_this_vret_args): Ditto.
11032
11033 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
11034
11035         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
11036         in cinfo to determine the registers which need to be used.
11037
11038 2005-09-20  Miguel de Icaza  <miguel@novell.com>
11039
11040         * driver.c (mono_main): Add --server and --desktop flags. 
11041
11042 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
11043
11044         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
11045         registers as global registers.
11046
11047         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
11048         longer needed with the new register allocator.
11049
11050         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
11051
11052         * cpu-ia64.md: Remove unused opcodes.
11053         
11054         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
11055         
11056 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
11057
11058         * cpu-amd64.md: Remove unused opcodes.
11059
11060         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
11061         needed with the new register allocator.
11062
11063         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
11064         reg-reg moves.
11065
11066 2005-09-16  Raja R Harinath  <rharinath@novell.com>
11067
11068         * Makefile.am (check-local): Don't invoke semdel-wrapper.
11069
11070 2005-09-16  Martin Baulig  <martin@ximian.com>
11071
11072         * exceptions-amd64.c
11073         (throw_exception): Don't call mono_debugger_throw_exception() if
11074         we're a rethrow - see the FIXME in the code.
11075
11076 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
11077
11078         * mini.c (mono_init_exceptions): This only works on some architectures.
11079         
11080 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
11081
11082         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
11083         on ia64.
11084
11085         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
11086
11087         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
11088         now in mini-exceptions.c.
11089
11090 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
11091
11092         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
11093         now in mini-exceptions.c.
11094
11095 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
11096
11097         * exceptions-x86.c: Applied patch from Patrik Torstensson 
11098         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
11099
11100         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
11101         code into mini-exceptions.c. Add some assertions to it.
11102
11103 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
11104
11105         * aot.c (emit_section_change): Applied patch from "The Software Team" 
11106         (<software@solmersa.com>). Fix as errors on windows.
11107
11108 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
11109
11110         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
11111         method info into the LMF.
11112
11113 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11114         
11115         * mini-ia64.c: Add proper unwind info for method epilogs.
11116
11117         * exceptions-ia64.c: Add some code to help debugging.
11118         
11119         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
11120
11121         * mini-exceptions.c: Fix warning.
11122
11123 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
11124
11125         * mini.c: Really fix build.
11126
11127         * mini-x86.c mini-amd64.c: Fix build.
11128
11129 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11130
11131         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
11132
11133         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
11134         some Interlocked methods as intrinsics.
11135
11136         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
11137         for Thread methods as well.
11138
11139         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
11140
11141         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
11142
11143         * mini-ia64.c mini-x86.c mini-amd64.c 
11144         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
11145         OP_MEMORY_BARRIER.
11146         
11147         * mini.c (mono_init_exceptions): Fix build breakage.
11148
11149 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
11150
11151         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
11152         of instructions. Use the new ia64_unw_op macros for emitting unwind
11153         info.
11154
11155         * mini.c (mono_init_exceptions): Initialize exception handling
11156         related trampolines at startup.
11157
11158 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
11159
11160         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
11161
11162 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
11163
11164         * mini.c: Handle type loading errors gracefully during compilation and
11165         throw the appropriate exception.
11166
11167 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
11168
11169         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
11170         for the mono binary.
11171
11172 2005-09-09  Martin Baulig  <martin@ximian.com>
11173
11174         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
11175         the release.
11176
11177 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
11178
11179         * mini-arm.h: use emulation for conv.r.un for the release.
11180
11181 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
11182
11183         * mini-arm.c, objects.cs: more fixes and tests for them.
11184
11185 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
11186
11187         * mini-arm.c: align structures to at least 4 bytes to be able
11188         to keep our current optimized memcpy.
11189
11190 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
11191
11192         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
11193
11194 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11195
11196         * mini.c: ignore SIGPIPE.
11197
11198 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
11199
11200         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
11201
11202         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
11203
11204 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
11205
11206         * mini.h: Add prototype for mono_allocate_stack_slots_full.
11207
11208 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
11209
11210         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
11211         exception handling support.
11212         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
11213         patch by Brian Koropoff <briank@marakicorp.com>).
11214
11215 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
11216
11217         * mini.c: revert another 'optimization' which breaks when
11218         items on the eval stack need to be saved at a basic block end
11219         (bug #75940).
11220
11221 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
11222
11223         * jit-icalls.c: for arrays, ensure we always provide
11224         lower bounds.
11225
11226 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
11227
11228         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
11229         
11230         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
11231
11232 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
11233
11234         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
11235         arguments in their original register.
11236
11237 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
11238
11239         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
11240         memset/memcpy.
11241
11242         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
11243         when ssapre is enabled.
11244
11245         * inssel-long.brg: Fix bug in previous patch.
11246
11247         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
11248         multiplication by a constant.
11249
11250 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
11251
11252         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
11253         icc.
11254
11255         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
11256         saving registers.
11257
11258 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
11259
11260         * inssel-arm.brg: apply changes tested by Brian Koropoff
11261         <briank@marakicorp.com>.
11262
11263 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
11264
11265         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
11266         
11267 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
11268
11269         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
11270         to the same register if dreg is just a base register.
11271         (print_ins): Improve printing of membase opcodes.
11272
11273         * inssel-x86.brg: Add optimized ldind(reg) rules.
11274
11275         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
11276
11277 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
11278
11279         * mini.c: when running under valgrind, set the stack bottom for
11280         the GC at the actual approximate stack for the app (fixes running
11281         mono with valgrind).
11282
11283 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
11284
11285         * mini.c: do no break at the first valuetype to init found
11286         (fixes bug #75791).
11287
11288 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
11289
11290         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
11291
11292 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
11293
11294         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
11295
11296 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
11297
11298         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
11299
11300 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11301
11302         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
11303
11304         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
11305         code.
11306
11307         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
11308         code.
11309
11310         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
11311         methods.
11312
11313 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
11314
11315         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
11316
11317 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11318
11319         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
11320         in the tail recursion optimization.
11321
11322         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
11323         debug info into the assembly file.
11324
11325         * iltests.il: Add test for filter regions.
11326
11327         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
11328         initial stack of filter regions. Fixes #75755.
11329
11330 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
11331
11332         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
11333         stack requirements.
11334
11335 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11336
11337         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
11338         the check for an already compiled method on non-ia64 platforms.
11339         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
11340         proper domain.
11341
11342         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
11343
11344         * inssel-x86.brg: Add some optimized call rules.
11345
11346 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
11347
11348         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
11349         method here.
11350
11351         * mini.h mini-trampolines.c: Pass the trampoline argument to 
11352         mono_arch_patch_delegate_trampoline.
11353
11354         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
11355
11356         * mini-trampolines.c: Fix build.
11357
11358         * mini-amd64.h: Add delegate trampolines.
11359
11360         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
11361
11362         * inssel-amd64.brg: Add optimized call rules.
11363         
11364         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
11365
11366         * inssel-ia64.brg: Add optimized ldind(reg) rules.
11367
11368 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
11369
11370         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
11371         change.
11372
11373         * mini-ia64.c: Remove LMF fixmes.
11374
11375         * mini-ia64.h: Remove most fields from LMF.
11376
11377         * inssel-ia64.brg (stmt): Fix unaligned access errors.
11378
11379         * mini-trampolines.c: Add support for IA64 function descriptors.
11380
11381         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
11382         for IA64 function descriptors.
11383
11384 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
11385
11386         * tramp-arm.c: patch the vtable for virtual calls. Added
11387         support code to register/unregister the LMF.
11388         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
11389         more LMF work.
11390
11391 2005-08-19  Dick Porter  <dick@ximian.com>
11392
11393         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
11394         bit value if needed.
11395
11396 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
11397
11398         * mini.c (mini_get_method): Move handling of wrapper data here.
11399
11400         * mini.c (mono_method_to_ir): Add support for dynamic methods.
11401
11402         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
11403         virtual.
11404
11405         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
11406         bblock->code does not remain empty.
11407
11408 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
11409
11410         * arrays.cs: Add regression test for #75832.
11411
11412         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
11413         rules. Fixes #75832.
11414
11415         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
11416         instruction scheduling.
11417
11418 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
11419
11420         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
11421
11422 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
11423
11424         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
11425
11426         * mini-codegen.c: Fix VC build.
11427
11428         * cpu-pentium.md: Increase length of atomic_exhange_i4.
11429
11430 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11431
11432         * mini.h: fix signature for mono_register_opcode_emulation.
11433
11434 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
11435
11436         * mini.c: Get rid of most of the helper_sig_... constants using
11437         mono_create_icall_signature ().
11438
11439 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
11440
11441         * jit-icalls.c (helper_ldstr): New helper function.
11442
11443         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
11444
11445         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
11446         throw, load the string using a helper call instead of creating a string object.
11447
11448         * aot.c: Update after LDSTR changes.
11449
11450         * mini.h: Bump AOT file version.
11451         
11452         * aot.c: Save class size info into the AOT file. Print more statistics during
11453         compilation.
11454
11455         * mini.h: Bump AOT file version.
11456
11457         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11458         ordering of disasm cases. Fixes #74957.
11459
11460 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
11461
11462         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
11463         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
11464         the generic code needed for the ARM port.
11465
11466 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
11467
11468         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
11469         inssel-arm.brg: more ARM features and fixes.
11470
11471 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
11472
11473         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
11474         ARM port work in progress.
11475
11476 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
11477
11478         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
11479
11480         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
11481
11482         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
11483
11484         * inssel.brg (mini_emit_memset): Add support for unaligned access.
11485
11486         * *-ia64.*: Ongoing IA64 work.
11487         
11488         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
11489
11490 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11491
11492         * TODO: Remove out-of-data todo stuff.
11493
11494         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
11495         dead code.
11496
11497         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
11498
11499         * mini.h: Bump corlib version.
11500
11501 2005-07-27  Martin Baulig  <martin@ximian.com>
11502
11503         * mini-codegen.c
11504         (create_copy_ins): Added `const unsigned char *ip' argument; set
11505         `copy->cil_code' from it.
11506
11507 2005-07-27  Martin Baulig  <martin@ximian.com>
11508
11509         * mini-exceptions.c (mono_handle_exception): Don't call
11510         mono_debugger_handle_exception() for filters.
11511
11512 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
11513
11514         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
11515         as well.
11516
11517 2005-07-26  Martin Baulig  <martin@ximian.com>
11518
11519         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
11520
11521         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
11522         helper_compile_generic_method() if the method is actually virtual
11523         and non-final.
11524
11525 2005-07-26  Martin Baulig  <martin@ximian.com>
11526
11527         * mini.c
11528         (trampoline_code): Renamed to `mono_trampoline_code' and made it
11529         public; this is now accessed directly by the debugger.
11530         (mono_generic_trampoline_code): Removed.
11531
11532         * debug-mini.c
11533         (mono_debug_init_method): Also add interncalls and wrappers.
11534
11535 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
11536
11537         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
11538
11539 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
11540
11541         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
11542
11543 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
11544
11545         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
11546
11547 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11548
11549         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
11550         getting TLS offsets on AMD64 too.
11551
11552 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
11553
11554         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
11555
11556 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
11557
11558         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
11559         inssel-arm.brg, mini-arm.h: ARM port work in progress.
11560
11561 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11562
11563         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
11564
11565         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
11566         to mini.c.
11567
11568         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
11569         mono_sparc_is_virtual_call ().
11570         
11571         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
11572
11573         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
11574         trampoline parameters.
11575
11576         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
11577         
11578         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
11579         to mono_arch_get_vcall_slot_addr.
11580
11581         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
11582         trampoline code.
11583
11584         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
11585
11586 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11587
11588         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
11589
11590 2005-07-19  Martin Baulig  <martin@ximian.com>
11591
11592         * exceptions-amd64.c (throw_exception): Call
11593         mono_debugger_throw_exception() here like we're doing it on i386.
11594
11595 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11596
11597         * mini-ia64.c: Add optimized TLS access support.
11598
11599 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
11600
11601         * mini-exceptions.c: Ongoing IA64 work.
11602
11603         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
11604
11605         * mini.c: Use the default optimization set when embedding. Fixes
11606         #75194.
11607
11608 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
11609
11610         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
11611         of trampolines to a separate file.
11612
11613         * mini-trampolines.c: New file.
11614
11615         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
11616         separate file.
11617         
11618         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
11619         amd64/ia64 code.
11620
11621         * mini-codegen.c: Fix cygwin build.
11622
11623 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
11624
11625         * mini.c: Add some minor changes needed by the IA64 port.
11626
11627         * *-ia64.*: Ongoing IA64 work.
11628
11629 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
11630
11631         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
11632         trampolines into arch-independent and arch-dependent parts.
11633
11634         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
11635
11636 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
11637
11638         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
11639
11640         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
11641         the xp-regalloc-branch for amd64.
11642
11643         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
11644         xp-regalloc-branch for x86.
11645
11646 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11647
11648         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
11649
11650 2005-07-06  Martin Baulig  <martin@ximian.com>
11651
11652         * mini.c
11653         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
11654         (mono_jit_runtime_invoke): Likewise.
11655
11656 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11657
11658         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
11659         on x86 too.
11660         
11661         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
11662         without loading their metadata. Reorganize the file format so exception handling+
11663         debug info is kept separate from normal method info. Create MonoJitInfo 
11664         structures for methods lazily.
11665
11666         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
11667         loading metadata.
11668         (x86_class_init_trampoline): Patch AOT class init trampolines too.
11669
11670         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
11671
11672         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
11673         in AOT code.
11674
11675         * mini.h: Bump AOT file version.
11676
11677 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
11678
11679         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11680
11681 2005-07-01  Raja R Harinath  <rharinath@novell.com>
11682
11683         * Makefile.am (check-local): Call semdel-wrapper.
11684
11685 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
11686
11687         * mini-x86.c: Revert the last change as it seems to break the build..
11688
11689 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11690
11691         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11692         
11693         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
11694
11695 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
11696
11697         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
11698         outside of the macro, so strange stuff doesn't happen with gcc4
11699         (NEW_AOTCONST_TOKEN): Likewise.
11700
11701 2005-06-28  Martin Baulig  <martin@ximian.com>
11702
11703         * mini.c (mini_class_is_system_array): New static method; use this
11704         instead of `klass->parent == mono_defaults.array_class' everywhere
11705         since this also works for the new generic array class.
11706
11707 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11708
11709         * inssel.brg: Remove warnings.
11710
11711 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
11712
11713         * mini-ia64.c: Ongoing IA64 work.
11714
11715         * basic-float.cs: Add float->i1 conversion test.
11716
11717         * iltests.il: Add conv.u4 test.
11718
11719 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
11720
11721         * inssel-long.brg: Fix bug caused by last change.
11722
11723 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
11724
11725         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
11726         BSDs.  Allows the x86 JIT to work on OSX86
11727
11728 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
11729
11730         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
11731         u4->i8 conversion.
11732
11733         * mini-ia64.c: Ongoing IA64 work.
11734
11735 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11736
11737         * mini-ia64.c: Ongoing IA64 work.
11738
11739         * driver.c: Clean up jit_code_hash as well when using --regression.
11740
11741         * inssel-long.brg: Fix long->i4/u4 conversion rules.
11742
11743         * basic-long.cs: Add tests for long->u4 conversion.
11744
11745 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
11746
11747         * mini.c: Take mono_get_domainvar out of macros. This makes sure
11748         that we do not depend on undefined C behavior: the order stuff
11749         gets evaluated within an expression. Fixes mono when compiled on
11750         GCC 4.
11751
11752 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
11753
11754         * *-ia64.*: Ongoing IA64 work.
11755
11756         * aot.c: Lower memory usage while loading AOT methods.
11757
11758         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
11759
11760         * mini.h: Bump AOT file format version.
11761
11762 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11763
11764         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
11765
11766 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
11767
11768         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
11769         not on callee assembly). Fixed some comments.
11770
11771 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
11772
11773         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
11774         it gets proper disassembly.
11775         (emit_method_info): Remove some dead code.
11776
11777         * mini.c (mini_method_compile): Allways allocate the GOT var in
11778         mono_method_to_ir for emulating opcodes.
11779
11780 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
11781
11782         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
11783         before freeing the code memory. Fixes #74990.
11784
11785         * objects.cs: Add regression test for #74992.
11786
11787         * liveness.c: Extend live ranges of arguments to the beginning of the
11788         method. Fixes #74992.
11789
11790         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
11791         so it points into the faulting instruction.
11792
11793 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
11794
11795         * jit-icalls.c (mono_imul_ovf): Add exception handling.
11796
11797         * *-ia64.*: Ongoing IA64 work.
11798
11799         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
11800
11801 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
11802
11803         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
11804
11805         * *-ia64.*: Ongoing IA64 work.
11806
11807 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
11808
11809         * basic-long.cs: Add tests for add/sub.ovf.
11810
11811         * basic.cs: Add tests for sub.ovf.
11812
11813         * *-ia64.*: Ongoing IA64 work.
11814
11815 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
11816
11817         * *-ia64.*: Ongoing IA64 work.
11818
11819         * basic.cs: Add conv.ovf.i4.un test.
11820
11821 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
11822
11823         * mini.c: (remove_block_if_useless) Fixed bug 75061.
11824         
11825 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11826
11827         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
11828
11829 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
11830
11831         * *-ia64.*: Ongoing IA64 work.
11832
11833 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11834
11835         * trace.[ch]:
11836         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
11837
11838 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
11839
11840         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
11841
11842 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
11843
11844         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
11845
11846         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
11847         of a call is callable by a near call.
11848
11849 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
11850
11851         * mini-ia64.c: Ongoing IA64 work.
11852
11853 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
11854
11855         * genmdesc.c: Make the generated array non-static.
11856
11857         * inssel-long.brg: Fix LSHR_IMM rule.
11858
11859         * *-ia64.*: Ongoing IA64 work.
11860
11861         * *-ia64.*: Ongoing IA64 work.
11862
11863 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11864
11865         * *-ia64.*: Ongoing IA64 work.
11866
11867         * *-ia64.*: Ongoing IA64 work.
11868         
11869         * mini-ia64.c: Ongoing IA64 work.
11870
11871         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
11872
11873 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11874
11875         * objects.cs basic-calls.cs: Move some tests to objects.cs.
11876         
11877         * objects.cs basic-long.cs: Move some tests to objects.cs.
11878
11879 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
11880
11881         * *-ia64.*: Ongoing IA64 work.
11882
11883         * iltests.il: Add a new test.
11884
11885         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
11886         newobj. Fixes #75042.
11887
11888 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
11889
11890         * *-ia64.*: Ongoing IA64 work.
11891         
11892         * *-ia64.*: Ongoing IA64 work.
11893         
11894         * *-ia64.*: Ongoing IA64 work.
11895
11896         * basic.cs objects.cs: Move tests accessing static variables as well.
11897
11898         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
11899
11900 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
11901
11902         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
11903
11904         * driver.c: Always print failed tests.
11905
11906         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
11907         frame pointer.
11908
11909         * *ia64*: Ongoing IA64 work.
11910
11911 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
11912
11913         * basic.cs: Add tests for add.ovf. Fix warnings.
11914
11915 2005-05-18  Miguel de Icaza  <miguel@novell.com>
11916
11917         * driver.c (mono_main): Avoid crash if no argument is passed to
11918         --break;  Do not use g_error, but f_printf.   And fix all other
11919         ocurrences of the same crash.
11920
11921 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
11922
11923         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
11924         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
11925         Fixes #74742.
11926
11927 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
11928
11929         * *-ia64.*: Add beginnings of IA64 backend.
11930
11931         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
11932
11933 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
11934
11935         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
11936         Fixes #74925.
11937
11938         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
11939
11940         * mini-amd64.c: Fix a warning.
11941
11942 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
11943
11944         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
11945         in float_neg. Fixes #74897.
11946
11947         * mini-amd64.c (emit_call): Fix another near call bug.
11948
11949 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
11950
11951         * declsec.c: Keep the appdomain information in the structure. Added a 
11952         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
11953         value gets overwritten).
11954         * declsec.h: Set the default MonoArray for the the stack to 6. Added
11955         an MonoAppDomain member to MonoSecurityFrame.
11956         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
11957         used in the stack walk. Now use a MonoArray which grow (double) when
11958         it gets full.
11959
11960 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
11961
11962         * mini.c: Re-enabled runtime cleanup, since running threads should
11963         now properly stop when exiting.
11964
11965 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
11966
11967         * mini-codegen.c: New file contaning the arch-independent local
11968         register allocator. Not used by any architectures yet.
11969
11970         * mini.h linear-scan.c: Merge some changes from the 
11971         mini-xp-local-regalloc branch.
11972
11973 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
11974
11975         * mini-amd64.c (emit_call): Fix calls to native functions when the
11976         runtime is compiled as a shared library. Fixes #74756.
11977
11978         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
11979         on a literal field. Fixes #74751.
11980
11981 2005-04-25  Raja R Harinath  <rharinath@novell.com>
11982
11983         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
11984
11985 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
11986
11987         * objects.cs: Add missing null casting test.
11988
11989 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
11990
11991         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
11992         in wrapper methods. Also rename 'address' variable to 'offset'.
11993
11994 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
11995
11996         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
11997         warnings.
11998         
11999         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
12000
12001         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
12002         work on windows.
12003
12004 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
12005
12006         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
12007
12008 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
12009
12010         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
12011         just the last bytes.
12012
12013 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
12014
12015         * aot.c (mono_compile_assembly): Fix warning.
12016
12017         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
12018         by the _MSC_VER stuff.
12019
12020 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
12021
12022         * inssel-long.brg: Fix #74588.
12023
12024         * cpu-amd64.md: Fix #74591.
12025
12026         * iltests.il: Add new regression tests.
12027
12028 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
12029
12030         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
12031         valuetype.
12032
12033 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
12034
12035         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
12036
12037         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
12038         from Bill Middleton <flashdict@gmail.com>.
12039
12040 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
12041
12042         * arrays.cs: Add new regression test. Fix warnings.
12043
12044 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
12045
12046         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
12047         and leakage in CKFINITE.
12048
12049         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
12050         this to a null op since it is called on amd64 too.
12051
12052         * exceptions-amd64.c (get_throw_trampoline): Align stack.
12053
12054         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
12055         body since this is not used on amd64.
12056         
12057         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
12058
12059         * mini-amd64.c: Remove obsolete fixmes.
12060
12061         * mini.c (print_method_from_ip): Fix debugging support.
12062
12063 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12064
12065         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
12066         so that expressions that don't give much gain are not reduced.
12067         * ssapre.h: Likewise.
12068
12069 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
12070
12071         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
12072
12073         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
12074
12075         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
12076
12077 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
12078
12079         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
12080
12081         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
12082
12083 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
12084
12085         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
12086         stack touching.
12087
12088         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
12089
12090         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
12091
12092         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
12093
12094         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
12095         MONO_ARCH_USE_SIGACTION. Fixes #74252.
12096
12097         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
12098
12099         * mini-x86.c: Fix up stack overflow handling.   
12100
12101         * exceptions.cs: Add new regression test.
12102
12103 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
12104
12105         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
12106         mono_jit_thread_attach.
12107
12108         * mini.c (mono_method_to_ir): Verify called method is not abstract.
12109
12110 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12111
12112         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
12113         avoid calling constructors using callvirt.
12114
12115         * inssel.brg: Fix #74073.
12116
12117 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
12118
12119         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
12120         compilation with non-GCC compilers.
12121         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
12122         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
12123
12124 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
12125
12126         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
12127         klass->interface_offsets (will likely fix bug#74073).
12128
12129 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12130
12131         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
12132
12133 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
12134
12135         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
12136         to amd64_div_reg_size ().
12137         
12138         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
12139
12140 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
12141
12142         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
12143
12144 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12145
12146         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
12147
12148 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12149
12150         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
12151         
12152         * mini.c (mono_precompile_assembly): Load and precompile referenced
12153         assemblies as well. Fixes #74015.
12154
12155 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12156
12157         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
12158
12159 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
12160
12161         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
12162         a lot of checks and (anyway) permissions cannot work until corlib is 
12163         loaded.
12164
12165 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
12166
12167         * mini-ppc.c: fixed ABI issue on sysv/ppc.
12168
12169 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
12170
12171         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
12172         calls (fixes bug#72824).
12173
12174 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12175
12176         * mini.c: fix tail recursion elimination (see test in bug#73936).
12177
12178 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
12179
12180         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
12181         some fp functions in sse2 mode.
12182
12183 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
12184
12185         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
12186
12187 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
12188
12189         * mini.h mini.c: Add mono_get_jit_tls_key ().
12190
12191         * mini-x86.c: Enable fast TLS support on windows.
12192
12193 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
12194
12195         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
12196         * mini.c: Check for p/invoke method when generating code. If a
12197         p/invoke method, or it's class, isn't decorated with [Suppress
12198         UnmanagedCodeSecurity] then generate code to call System.Security.
12199         UnmanagedDemand (only if the security manager is active).
12200
12201 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12202
12203         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
12204         last change as it seems to cause strange crashes.
12205         
12206 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12207
12208         * *.c: handle unsafe function pointers where needed.
12209
12210 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12211
12212         * mini.c (mono_jit_free_method): Remove the fixme too.
12213
12214 2005-03-15  Miguel de Icaza  <miguel@novell.com>
12215
12216         * mini.c: As discussed, make the code actually free the delegate
12217         thunk now, to enable the debugging of delegate problems, use
12218         MONO_DEBUG=1 when running Mono. 
12219
12220         This takes also care of parts of the leaks as seen by Joe.
12221
12222 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
12223
12224         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
12225         thread_tls_offset calculation.
12226
12227 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
12228
12229         * declsec.c: Reworked linkdemand checks for icall. The previous code
12230         was using the declaration code (untrusted) and didn't work as expected
12231         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
12232         specific case.
12233
12234 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
12235
12236         * iltests.il: Add new localloc test.
12237
12238         * mini-amd64.c: Handle large stack allocations the same way as on
12239         windows if stack overflow handling is working.
12240         
12241         * mini-amd64.c: Allocate the signal stack using mmap.
12242
12243         * mini.c (sigsegv_signal_handler): Fix reading of context.
12244
12245         * mini-exceptions.c: Fix up stack overflow handling.
12246
12247         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
12248
12249         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
12250
12251         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
12252
12253         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
12254
12255         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
12256         tramp_init functions as they are no longer needed.
12257
12258 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
12259
12260         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
12261         
12262         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
12263
12264         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
12265         
12266         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
12267         support that now.
12268
12269         * mini-ops.h: Add OP_LMUL_IMM.
12270
12271         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
12272         long mul/div opcodes as intrinsic.
12273
12274         * mini-amd64.c (emit_call): Handle the case when the callee might be
12275         an AOT method.
12276
12277 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
12278
12279         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
12280         extra safe.
12281         
12282         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
12283
12284         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
12285
12286 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
12287
12288         * mini.c (mono_codegen): Don't leak here, to help people running
12289         monogrind.
12290
12291 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
12292
12293         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
12294         conversions in sse2 mode.
12295
12296         * basic-float.cs: Add regression test.
12297         
12298         * mini-amd64.c: Reenable sse2.
12299
12300 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12301
12302         * mini-amd64.c: Disable sse2 until some regressions are fixed.
12303
12304 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
12305
12306         * driver.c: Copyright text should include 2005.
12307         
12308 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12309
12310         * cpu-amd64.md (load_membase): Fix more max lengths.
12311
12312 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
12313
12314         * cpu-amd64.md (load_membase): Fix max length.
12315
12316         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
12317
12318         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
12319
12320         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
12321         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
12322
12323         * basic-float.cs: Add rounding regression test.
12324
12325         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
12326
12327 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
12328
12329         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
12330         structures in registers for pinvoke wrappers.
12331
12332 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
12333
12334         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
12335
12336 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
12337
12338         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
12339         wrapper to mono_jit_thread_attach.
12340
12341         * mini.c (mini_jit_thread_attach): New jit icall.
12342
12343         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
12344         native->managed wrappers.
12345
12346         * exceptions.cs: Add new regression test.
12347
12348         * mini.c (optimize_branches): Check regions in the cbranch to throw
12349         block case as well. Fixes #73242.
12350
12351 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12352
12353         * mini.c: thread safety fixes.
12354
12355 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
12356
12357         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
12358         patching stuff, since delegates use jump trampolines so there is
12359         no caller.
12360
12361         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
12362         jump trampolines.
12363         
12364         * tramp-amd64.c: Fix build.
12365
12366         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
12367         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
12368
12369         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
12370         Rename this to mono_arch....
12371         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
12372
12373         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
12374
12375         * mini-amd64.c (emit_call): If both the caller and the callee is
12376         guaranteed to have 32 bit addresses, emit a normal call.
12377
12378         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
12379
12380         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
12381         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
12382         method_ptr inside delegates.
12383
12384 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
12385
12386         * mini.c (mono_jit_free_method): Free the method info even if the native code is
12387         invalidated. Fixes #73001.
12388
12389         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
12390
12391         * mini-x86.c: Only use stdcall for pinvokes on windows.
12392
12393 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
12394
12395         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
12396         * mini-x86.c: remove unreliable __thread var offset detection,
12397         use the correct accessors and enable by default.
12398
12399 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12400
12401         * mini.c (mono_jit_free_method): Fix memory leak.
12402
12403 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
12404
12405         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
12406
12407 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
12408
12409         * cpu-amd64.md: Fix lengths of atomic opcodes.
12410
12411 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
12412
12413         * driver.c: try to not imply using ICU is any good.
12414
12415 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
12416
12417         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
12418         functions as inline ops.
12419
12420         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
12421         some Interlocked functions as inline ops.
12422
12423         * mini.c (move_basic_block_to_end): Fix bug in last patch.
12424
12425         * mini.h (MonoBasicBlock): Reorganize fields a bit.
12426
12427         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
12428
12429         * mini.c: Add support for OP_NOT_TAKEN.
12430
12431         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
12432         structures in registers for pinvoke wrappers.
12433
12434         * mini-amd64.c: Fix warnings.
12435
12436 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
12437
12438         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
12439
12440         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
12441
12442         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
12443         address instead of loading the address from it.
12444
12445         * mini-x86.c: Add support for returning small structs in registers
12446         on Win32. Fixes part of #70864.
12447         
12448 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
12449
12450         * trace.c (get_token): Improve error checking.
12451
12452 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12453
12454         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
12455
12456 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
12457  
12458         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
12459         it can be reused for MonoClass.
12460         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
12461         _LINKDEMAND.
12462
12463 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
12464
12465         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
12466         instead of a MonoReflectionMethod. The method information wasn't used
12467         when displaying SecurityException details (but will be now).
12468
12469 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
12470
12471         * Makefile.am : windows build fix.
12472
12473 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12474
12475         * iltests.il: Add new regression test.
12476
12477         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
12478         #72522.
12479
12480 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
12481  
12482         * mini.c: Moved linkdemand check into helper function check_linkdemand
12483         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
12484         LDFTN, LDVIRTFTN).
12485
12486 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
12487
12488         * declsec.c: Added statistics counter for different kinds of 
12489         LinkDemands.
12490         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
12491         (and commented) declaration.
12492         * mini.c: Added statistics counter for security Demand code 
12493         generation. Added display of security statistics.
12494
12495 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
12496
12497         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
12498         Fix compilation errors under gcc-2.95.
12499
12500 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
12501
12502         * mini.c, driver.c: Use the new jit trampoline hashtable
12503
12504 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12505
12506         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
12507
12508 2005-02-11  Martin Baulig  <martin@ximian.com>
12509
12510         * debug-mini.c (mono_debug_close_method): Free the line number array.
12511
12512 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12513
12514         * aot.c: Break up large methods into smaller ones. Share GOT slots for
12515         icalls.
12516
12517         * mini.h: Bump AOT file format version. 
12518
12519 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
12520
12521         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
12522         APTC and P/Invoke.
12523         * declsec.h: Added macros to get/set lazyly initialized security 
12524         informations about assemblies. Added new enum for different type of
12525         possible LinkDemand violation. Added function to check LinkDemands.
12526         * mini.h: Added a field to MonoCompile to hold any security violation
12527         detected when JITting a method (so it can be thrown later).
12528         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
12529         and CEE_CALLVIRT. Added code to throw exception at the end of
12530         mini_method_compile (note: the exception is unhandled right now).
12531
12532 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
12533
12534         * mini.c, jit-icalls.c: use the managed implementation of
12535         memset for initobj and memset, to avoid managed <-> unmanaged
12536         transitions.
12537
12538 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12539
12540         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
12541         optimization if it would need a GOT var.
12542
12543         * basic.cs: Add tests for constant propagation and switch statements.
12544
12545         * ssa.c: Fix out-of-range constant propagation and switch statements.
12546
12547 2005-02-09    <vargaz@freemail.hu>
12548
12549         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
12550
12551 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
12552
12553         * cpu-amd64.md (load_membase): Fix max length of load_membase.
12554
12555 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12556
12557         * mini.c: update to new signature of mono_class_get_allocation_ftn().
12558
12559 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
12560
12561         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
12562         arithmetic operations.
12563
12564 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
12565
12566         * mini-ppc.c: add a workaround for broken user code that
12567         DllImports vararg functions with non-vararg signatures.
12568
12569 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12570
12571         * mini.c (mono_jit_compile_method_inner): Add detection and a 
12572         meaningfull error message for assemblies written in Managed C++.
12573
12574         * tramp-amd64.c mini-amd64.h: Add support for 
12575         create_trampoline_from_token ().
12576
12577         * aot.c mini-x86.c abcremoval.c: Applied patch from
12578         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
12579
12580 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
12581
12582         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
12583         which takes a MonoImage/token as parameter instead of a MonoMethod.
12584
12585         * aot.c: Use the new trampoline for initializing vtables.
12586
12587         * aot.c: Add support for ldfld/stfld_remote wrappers.
12588
12589         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
12590         rules for compare <MEM>, IMM.
12591
12592         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
12593
12594         * aot.c: Handle inherited finalizers correctly.
12595
12596 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
12597
12598         * inssel.brg (stmt): Add a missing _setup_... ().
12599
12600         * aot.c: Save some parts of the class state to the AOT file and use it
12601         to recompute that state when a class is initialized.
12602
12603         * mini.c: Install AOT hooks into the runtime.
12604
12605         * mini.h: Bump AOT file format version.
12606         
12607         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
12608         Fixes #72148.
12609
12610         * iltests.il: Add new test.
12611
12612 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12613
12614         * mini.c: fix typo.
12615
12616 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
12617
12618         * mini.c: setup the statistical profiler in the thread attach
12619         callback to cope with the new single thread code.
12620
12621 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
12622
12623         * mini-ppc.c: ensure we have enough room for the profiler
12624         calls (fixed bug#72084).
12625
12626 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
12627
12628         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
12629         it.
12630
12631 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12632
12633         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
12634
12635 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12636
12637         * ssapre.c: Fixed an issue with down safety (this allows IronPython
12638         to succesfully execute parrotbench).
12639         * ssapre.h: Likewise.
12640
12641 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12642
12643         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
12644         variable for stores to method arguments (fixes a SSAPRE issue).
12645
12646 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12647
12648         * mini.c: handle value types in dup, fixes gen-112.cs.
12649
12650 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
12651
12652         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
12653         sequence for calls in dynamic methods to avoid thunks.
12654
12655 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12656
12657         * mini.c: correctly remove dynamic methods from the hashtable.
12658
12659 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12660
12661         * driver.c: Disabled SSAPRE until fix the bug that appears
12662         in IronPython's parrotbench.
12663
12664 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
12665
12666         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
12667
12668         * mini.c (mono_method_to_ir): Revert the previous change.
12669         
12670         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
12671         when AOT compiling.
12672
12673         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
12674         mono_jit_info_table_find () etc. when running under valgrind.
12675
12676         * inssel.brg: Fix warnings.
12677
12678         * mini-exceptions.c: Fix warnings.
12679
12680 2005-01-31  Martin Baulig  <martin@ximian.com>
12681
12682         * driver.c (compile_all_methods_thread_main): Don't try to compile
12683         generic methods or anything which has type parameters.
12684
12685 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
12686
12687         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
12688
12689         * TestDriver.cs: Add --verbose flags.
12690
12691         * graph.c ssa.c: Fix 64 bit warnings.
12692         
12693         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
12694         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
12695         Fix 64 bit warnings.
12696
12697         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
12698         variable not spotted by gcc.
12699         
12700         * mini-amd64.c inssel-amd64.brg: Applied patch from  
12701         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
12702         X86_COMPARE_MEMBASE opcodes.
12703
12704         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
12705
12706 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
12707
12708         * *: MonoMethod->signature might be NULL now. You *MUST* use
12709         mono_method_signature.
12710
12711 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12712
12713         * driver.c (compile_all_methods_thread_main): Compile the methods
12714         without invoking cctors.
12715
12716 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12717
12718         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
12719         * basic-calls.cs: test for the above.
12720
12721 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12722
12723         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
12724         MonoJitInfo changes.
12725
12726 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
12727
12728         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
12729         eagerly if it contains dynamic methods.
12730         
12731         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
12732
12733         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
12734         trace, it is now computed by an icall from trace_ips.
12735         
12736         * mini-exceptions.c: Fix a warning.
12737
12738 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
12739
12740         * mini-exceptions.c: don't bother getting stack trace info if
12741         it's not going to be used.
12742
12743 2005-01-27  Raja R Harinath  <rharinath@novell.com>
12744
12745         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
12746         ssapre-mini-ops.h.
12747
12748 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
12749
12750         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
12751
12752         * aot.c: Avoid calling mono_method_get_header () if not needed.
12753
12754         * mini.h: Bump AOT file format version.
12755         
12756         * mini.c (mono_emit_native_call): Allocate a GOT var here.
12757
12758         * mini.c (mono_print_tree): Print more info for calls.
12759
12760 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
12761
12762         * declsec.h: Remove warning by adding missing include for marshal.h
12763
12764 2005-01-26  Martin Baulig  <martin@ximian.com>
12765
12766         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
12767         `ip' twice.
12768
12769 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
12770
12771         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
12772         flags.
12773
12774         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
12775
12776         * aot.c (mono_compile_assembly): Fix a warning.
12777
12778 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
12779
12780         * declsec.c: Look for security attributes on the original MonoMethod 
12781         (and not the wrapped one). This fix permissions on icalls.
12782
12783 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12784
12785         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12786
12787         * mini.c (mono_allocate_stack_slots): Add a fixme.
12788
12789         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12790
12791 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12792
12793         * inssel.brg: optimize casts of sealed types (more
12794         optimizations waiting for fixes in remoting).
12795
12796 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12797
12798         * inssel.brg (stmt): Add another dummy rule.
12799
12800         * driver.c: Fix warnings.
12801
12802         * driver.c (mono_main): If running under valgrind, instruct glib to use
12803         the system allocation functions so valgrind can track the memory
12804         allocated by the g_... functions.
12805
12806         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
12807
12808         * mini-ops.h: Add OP_DUMMY_STORE opcode.
12809
12810         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
12811
12812         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
12813         variables in try regions.
12814
12815         * mini.c (mini_method_compile): Don't disable optimizations on large
12816         methods when AOT compiling.
12817
12818         * mini.c (mono_allocate_stack_slots): New arch independent method to 
12819         allocate stack slots. Not yet used.
12820
12821 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
12822
12823         * debug-mini.c (mono_debug_close_method): Plug some leaks.
12824
12825 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
12826
12827         * mini-ppc.c: make the branch info relative as the code
12828         buffer can be reallocated.
12829
12830 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
12831
12832         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
12833         * driver.c: Removed the AOT/security restriction. Now initialize the
12834         security manager (in metadata) if --security is used.
12835         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
12836         rather than the pointer to declarative security, when AOT is used.
12837
12838 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
12839
12840         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
12841         basic blocks, reduced intrinsic exception throwing code size.
12842
12843 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
12844
12845         * driver.c (mini_usage): Reorder the usage screen.
12846
12847 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
12848
12849         * mini.c (mono_resolve_patch_target): Fix warning.
12850
12851 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
12852
12853         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
12854         previous patch.
12855
12856         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12857
12858         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
12859         breaks the amd64 build.
12860
12861         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
12862         register allocation. Fixes #71454.
12863
12864         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12865
12866         * arrays.cs: Add new regression test.   
12867
12868 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12869
12870         * ssapre.c: Turned usage of snprintf to GString.
12871         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
12872         (I left it on by mistake in my previous commit).
12873
12874 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
12875
12876         * mini.c, cfold.c, basic-calls.cs: preserve side effects
12877         on cond branch optimization (fixes bug# 71515).
12878
12879 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12880
12881         * abcremoval.c: Fixed bug 71062.
12882         * abcremoval.h: Likewise.
12883
12884 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12885
12886         * mini.c: Added a new functionality to optimize_branches, the removal
12887         of useless basic blocks, and fixed some problem in the removal of
12888         critical edges; some utility functions added for both purposes.
12889         * ssapre.c: Added complex expression support, and fixed bug 70637.
12890         * ssapre.h: Likewise.
12891         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
12892         enabled in SSAPRE.
12893         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
12894         * driver.c: Re-enabled SSAPRE.
12895
12896 2005-01-19  Martin Baulig  <martin@ximian.com>
12897
12898         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
12899         the result of mono_get_method_constrained().
12900
12901 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
12902
12903         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
12904         manager.
12905
12906 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
12907
12908         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
12909         be detected.  Fixes #59296.
12910
12911 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12912
12913         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
12914         which can happen. Fixes #71361.
12915
12916 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12917
12918         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
12919         manager.
12920
12921 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12922
12923         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
12924         appdomain-unload.exe to fail.
12925         
12926         * mini.c: Fix some memory leaks.
12927
12928 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
12929
12930         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
12931         Fixed bug and sped up some codepaths.
12932
12933 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12934
12935         * mini.c: Fix some memory leaks.
12936
12937         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
12938         conversion.
12939
12940         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
12941
12942         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
12943         #71320.
12944
12945         * iltests.il: Add regression test for #71320.
12946
12947 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
12948
12949         * mini.c (mono_codegen): Fix installation of profiler hooks.
12950
12951         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
12952
12953 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12954
12955         * mini.h, mini.c, cfold.c: optimize access to enum
12956         readonly fields, too. Eval conditional branches if possible
12957         to perform unreachable code removal in more cases.
12958
12959 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
12960
12961         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
12962
12963         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
12964         code manager.
12965
12966         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
12967         WinXP DEP. Fixes #71244.
12968
12969 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
12970
12971         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
12972
12973 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
12974
12975         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
12976
12977 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
12978
12979         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
12980         changes.
12981
12982         * mini.h: Bump AOT version.
12983
12984         * mini.h (MonoCompile): Change exvar to a hash table.
12985
12986         * mini.c: Allocate a separate exvar for each handler block.
12987
12988         * mini.c: Get rid of the computation of filter_lengths, its not needed.
12989
12990         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
12991         ex var with the pending exception and only throw if the two are equal.
12992         Fixes #68552.
12993         
12994         * exceptions.cs: Add tests for rethrow and nested catch clauses.
12995
12996         * mini-x86.c: Fix warnings.
12997
12998         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
12999         used by all the ports now.
13000
13001         * aot.c: Add write-symbols and save-temps options.
13002
13003 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
13004
13005         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
13006
13007 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
13008
13009         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
13010         operations.
13011
13012         * tramp-s390.c: Check vtable slot belongs to the domain.
13013
13014         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
13015         as per other platforms.
13016
13017         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
13018
13019 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
13020
13021         * driver.c: we don't run the Main() code in a subthread anymore.
13022
13023 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
13024
13025         * mini.c: added experimental rtc support in the statistical
13026         profiler: if the user has the permission, more accurate statistics
13027         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
13028         The MONO_RTC value must be restricted to what the linux rtc allows:
13029         power of two from 64 to 8192 Hz.
13030
13031 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
13032
13033         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
13034
13035 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
13036
13037         * mini-ppc.c: better icache flush for smp.
13038
13039 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
13040
13041         * mini-amd64.c (emit_move_return_value): Fix memory leak.
13042
13043         * mini-x86.c (get_call_info): Add the get_call_info () code from the
13044         amd64 port, not yet used.
13045
13046 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13047
13048         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
13049         a struct type.
13050
13051 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
13052
13053         * driver.c: Added --security option to activate the security manager.
13054         Right now this will allow code generation for declarative demands and
13055         is disabled when AOT is specified.
13056         * mini.c: Add code generation for declarative security demands.
13057         * mini.h: Add mono_use_security_manager as an extern gboolean.
13058
13059 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13060
13061         * aot.c (mono_compile_assembly): Speed up compilation a bit by
13062         emitting more dense assembly code.
13063
13064         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
13065         exception throwing stuff.
13066
13067 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
13068
13069         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
13070         dead code.
13071
13072         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
13073         left in by mistake.
13074
13075         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
13076         fixed.
13077
13078         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
13079
13080         * tramp-*.c: Only patch vtable slots if the object is in the current
13081         domain. Fixes appdomain-unload.exe.
13082
13083         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
13084         
13085         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
13086         x86 branch.
13087
13088 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13089
13090         * mini.c (reverse_branch_op): New helper function.
13091
13092         * mini.c (optimize_branches): Run the new optimization only on 
13093         platforms which support it. Also reverse all kinds of branches.
13094
13095         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
13096
13097         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
13098         a throw statement.
13099
13100         * mini.c (optimize_branches): Reverse not-equals branches if the false
13101         bblock is a throw. This happens a lot of time with argument checking in
13102         corlib.
13103
13104         * mini.c (mono_codegen): Add support for placing basic blocks after
13105         the function epilogue.
13106
13107         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
13108         function epilogue.
13109         
13110 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
13111
13112         * mini.c (setup_stat_profiler): Only set this up if the platform
13113         supports ITIMER_PROF.
13114
13115 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13116
13117         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
13118         previous patch.
13119
13120         * inssel.brg: Fix a warning.
13121
13122 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
13123
13124         * mini.c: added support for statistical profiler 
13125         (run with: --profile=default:stat).
13126
13127 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
13128
13129         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
13130
13131         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
13132
13133         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
13134         related to global registers from the amd64 port.
13135
13136 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
13137
13138         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
13139
13140         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
13141         with global registers.
13142         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
13143
13144         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
13145
13146 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
13147
13148         * debug-mini.c (encode_value): Fix off-by-one.
13149
13150         * aot.c (encode_value): Likewise.
13151
13152         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
13153
13154 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
13155
13156         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
13157         AOT.
13158
13159         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
13160         
13161         * aot.c (emit_method_info): Increase size of temp buffer.
13162
13163         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
13164         the AOT case.
13165
13166 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
13167
13168         * aot.c (emit_method_info): Fix build.
13169         
13170         * aot.c: Further rework of the AOT file format to reduce the size of
13171         the method info data.
13172
13173         * mini.h: Bump AOT file format version.
13174
13175 2004-12-27  Martin Baulig  <martin@ximian.com>
13176
13177         * mini.c (mini_get_method): New static method; call
13178         mono_get_method_full() and mono_get_inflated_method().
13179         (mono_method_to_ir): Use mini_get_method() instead of
13180         mono_get_method_full(). 
13181
13182 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
13183
13184         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
13185
13186 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
13187
13188         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
13189
13190         * inssel-amd64.brg: Add some optimization rules.
13191
13192 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
13193
13194         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
13195         standard not GC'd stuff is fine.
13196
13197 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
13198
13199         * aot.c: Rework the AOT file format to get rid of most of the global
13200         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
13201
13202         * mini.h: Bump AOT file format version.
13203         
13204 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
13205
13206         * mini.h: Bump AOT file format version.
13207
13208         * aot.c (mono_aot_is_got_entry): New function to determine if an 
13209         address is inside a GOT.
13210
13211         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
13212
13213         * cpu-pentium.md: Increase the maximum size of some instructions which
13214         might involve a got access.
13215         
13216         * mini.c (get_method_from_ip): Another debug helper function.
13217
13218         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
13219         when got var accesses are created during the decompose phase.
13220
13221         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
13222
13223         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
13224         argument mini_compile_method and to MonoCompile, and use this to
13225         determine whenever a given method is compiled for AOT. This allows the
13226         other methods compiled during AOT compilation to be free of AOT stuff,
13227         so the backends does not need to add special support for them by
13228         creating a fake GOT etc.
13229
13230         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
13231         longer needed.
13232
13233 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
13234
13235         * mini.c (mono_method_to_ir): It turns out that some of the
13236         x-appdomain wrappers are lax with types, so just ignore this for
13237         all wrappers.
13238
13239         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
13240         at the vtable->klass. If it is non-shared code we can just use the
13241         vtable.
13242
13243 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
13244
13245         * mini-ppc.c: access MonoDomain from tls, too.
13246
13247 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
13248
13249         * declsec.c: Removed unused variable (and related warning ;-)
13250
13251 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
13252
13253         * iltests.il: New test for LDELEMA on an array of ref types.
13254
13255         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
13256         all ldelema's on reftypes.
13257         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
13258         it was the wrong place to put it.
13259
13260         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
13261         register to pop to make this cleaner, at the request of Paolo.
13262
13263 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13264
13265         * mini-ops.h (OP_GETHASHCODE): New op.
13266
13267         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
13268
13269         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
13270         operation.
13271
13272         For a microbenchmark, this reduces the cost of Hashtable.get_Item
13273         by 25%.
13274         
13275         * mini-x86.c (mono_arch_output_basic_block): Rather than
13276
13277         add ebp, 4
13278
13279         Emit
13280
13281         pop edx
13282
13283         The first is 3 bytes while the second is 1. This saves 36 kb on
13284         mscorlib, quite a big saving. When bootstraping mcs, I was able to
13285         see a small boost because of icache locality.
13286
13287         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
13288
13289 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
13290
13291         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
13292         started code sharing with the generic code.
13293
13294 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
13295
13296         * mini-ppc.c, cpu-g4.md: added code for direct access to
13297         tls data slots.
13298
13299 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
13300
13301         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
13302          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
13303         to OP_TLS_GET.
13304
13305 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
13306
13307         * declsec.c|h: Added functions to cache the declarative stack modifiers
13308         in MonoJitInfo and to create a security frame from a MonoJitInfo 
13309         structure.
13310         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
13311         created. Register internal calls for System.Security.SecurityFrame::
13312         _GetSecurityFrame and _GetSecurityStack.
13313         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
13314         the definitions for the new stack walk/callback mechanism.
13315         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
13316         first security frame for LinkDemands and InheritanceDemands) and
13317         GetSecurityStack for Demands. Both use the new mono_walk_stack code
13318         from lupus.
13319         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
13320         walk initialization (lupus).
13321
13322 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13323
13324         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
13325         idiom.
13326         (handle_loaded_temps): Do not create a temporary variable for
13327         things that we know are temps. They will never be modified.
13328         (mono_spill_call): Set MONO_INST_IS_TEMP
13329         (mono_emulate_opcode): ditto
13330         (emit_tree): ditto
13331         (mono_method_to_ir.CEE_DUP): ditto
13332
13333 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
13334
13335         * mini.c (type_to_eval_stack_type): Make this handle the void type
13336         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
13337         (emit_tree): use ip_in_bb to special case some common idioms
13338         Update all callers to pass in the IP.
13339         (mono_method_to_ir): Make CEE_CALL* do the above as well.
13340
13341         This gives us a nice 2% speedup in mcs bootstrap.
13342
13343         * mini-x86.c (peephole_pass): Peephole pass to make
13344         mov  [foo], eax
13345         push [foo]
13346
13347         into
13348
13349         mov [foo], eax
13350         push eax
13351
13352         * mini.c (ip_in_bb): new method.
13353         (mono_method_to_ir): use this method rather than doing the hash
13354         lookup ourselves.
13355
13356         * linear-scan.c (mono_linear_scan): When expiring actives, you
13357         don't need to keep around variables that expire on this
13358         instruction. This makes it so that:
13359              a = b + 1
13360         will turn into:
13361              store (ebx add (ebx, 1))
13362         which will become
13363              add ebx, 1
13364
13365 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
13366
13367         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
13368         combination to avoid doing two copies. Fix up problems with previous
13369         patch.
13370
13371         * mini.c: Fix 64 bit warnings.
13372
13373         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
13374
13375 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
13376
13377         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
13378         changes from the x86 code.
13379
13380         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
13381
13382 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
13383
13384         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
13385         throwing code to reduce its size, unify the AOT and non-aot code and 
13386         get rid of relocations in the AOT case.
13387
13388         * mini-x86.h mini.c exceptions-x86.c 
13389         (mono_arch_get_throw_corlib_exception): New arch specific function to 
13390         raise corlib exceptions which doesn't require relocations in the 
13391         caller.
13392
13393         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
13394
13395 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
13396
13397         * mini.c (mono_emit_method_call): Only allocate the got var when it is
13398         needed.
13399
13400         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
13401         in the AOT case.
13402
13403 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13404
13405         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
13406         with add function when used from Inc/dec atomic 
13407         functions. Re-enabled optimization on x86.
13408         * mini-ops.h: renamed atomic_add functions to
13409         allow _add to match the Interlocked::Add and
13410         _add_next to match Interlocked::Inc/Dec.
13411
13412 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
13413
13414         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
13415         linking of BBs to the end BB, and enabled SSAPRE also with
13416         consprop and copyprop (which was prevented by that bug).
13417
13418 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13419
13420         * mini-x86.c: disabling the Interlocked optimizing code. 
13421
13422 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13423
13424         * aot.c (load_aot_module): Move reading of got_addr after the AOT
13425         file version check.
13426         
13427 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13428
13429         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
13430         interlocked optimization due lack of support on x86, rewrote 
13431         exchange to take into account that base may be in eax.
13432         
13433         xsp works again; activated Interlocked optimizing code.
13434         
13435 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13436
13437         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13438
13439 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
13440
13441         * mini-ops.h: Add new opcodes.
13442
13443         * mini.h: Add new patch types. Add got_var to MonoCompile.
13444
13445         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
13446         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
13447         make it work with all kinds of patchable code.
13448
13449         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
13450         address of the GOT, and referencing entries in the GOT.
13451
13452         * mini.c: Add code to load the GOT address if needed by an opcode.
13453
13454         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
13455         independent AOT code on the x86 using an elf-style Global Offset Table.
13456
13457 2004-12-14  Raja R Harinath  <rharinath@novell.com>
13458
13459         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
13460
13461 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13462
13463         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
13464         when running xsp.
13465
13466 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
13467
13468         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
13469         of Interlocked:Increment/Decrement/Add as inline ops.
13470         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
13471
13472 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
13473
13474         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
13475         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
13476
13477 2004-12-12  Duncan Mak  <duncan@ximian.com>
13478
13479         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
13480         again. `patch_info->table_size' is no longer valid after Zoltan's
13481         commit #37636.
13482
13483 2004-12-12  Martin Baulig  <martin@ximian.com>
13484
13485         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
13486         if we are the "real" method, ie. not an inlined method inside it.
13487
13488 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
13489
13490         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
13491         before we look in the special fields table. This fixes
13492         ../tests/thread-static-init.cs.
13493
13494 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13495
13496         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
13497         for Array get_Rank and get_Length. Fixes bug #70465.
13498
13499 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
13500
13501         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
13502         separate structure to reduce the size of MonoJumpInfo.
13503
13504 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
13505
13506         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
13507
13508 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
13509
13510         * mini.c (mini_get_inst_for_method): Changed to allow ports
13511         to return a MonoInst instead of opcode 
13512         (renamed mini_get_opcode_for_method to better reflect the new functionality)
13513         
13514         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
13515         Allow ports to return a created MonoInst instead of op-code, will enable
13516         new optimizations.
13517         (renamed mini_get_opcode_for_method to better reflected the functionality)
13518
13519 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
13520
13521         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
13522
13523 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13524
13525         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
13526         Fixes #69985.
13527
13528 2004-12-08  Martin Baulig  <martin@ximian.com>
13529
13530         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
13531         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
13532
13533 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13534
13535         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
13536         correctly.
13537
13538         * exceptions.cs: Disable some tests which depend on properties of x86 fp
13539         arithmetic.
13540
13541 2004-12-08  Raja R Harinath  <rharinath@novell.com>
13542
13543         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
13544
13545 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
13546
13547         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
13548         bug introduced by the previous patch.
13549
13550 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13551
13552         * mini-ppc.c, objectc.cs: handle large structs passed by value
13553         (fixes bug #69972).
13554
13555 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
13556
13557         * mini-ppc.c: OP_ARGLIST implementation from
13558         Geoff Norton  <gnorton@customerdna.com>.
13559
13560 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
13561
13562         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
13563         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
13564
13565 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13566
13567         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
13568
13569 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13570
13571         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
13572         support.
13573
13574 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
13575
13576         * mini-sparc.c: Zero out localled-ed memory.
13577
13578         * iltests.il: Add tests for zeroing out localloc-ed memory.
13579
13580 2004-12-04  Martin Baulig  <martin@ximian.com>
13581
13582         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
13583         mono_method_get_signature_full().       
13584
13585 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
13586
13587         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
13588         and some utility functions (always for SSAPRE), integrated SSAPRE.
13589         * mini.h: Likewise.
13590         * driver.c: Added ssapre option.
13591         * ssa.c: Small fix on OP_ARG handling.
13592         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
13593         * Makefile.am: Likewise.
13594
13595 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
13596
13597         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
13598         now in the xp code.
13599
13600         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
13601         icall.
13602
13603 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13604
13605         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
13606         
13607         * cpu-s390.md : Increase instruction length of oparglist.
13608
13609         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
13610
13611 2004-11-30  Martin Baulig  <martin@ximian.com>
13612
13613         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
13614         virtual generic methods.  We call a special helper_compile_generic_method()
13615         icall to retrieve the method from the vtable, inflate and compile
13616         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
13617
13618         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
13619
13620 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
13621
13622         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
13623
13624 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
13625
13626         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
13627         Fixes #69929.
13628
13629 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
13630
13631         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
13632         platforms with PIC aot.
13633
13634 2004-11-28  Martin Baulig  <martin@ximian.com>
13635
13636         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
13637         Fixes gen-112.cs.
13638
13639 2004-11-28  Martin Baulig  <martin@ximian.com>
13640
13641         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
13642         the result of mono_type_get_underlying_type() to check whether
13643         we're byref.
13644
13645 2004-11-26  Martin Baulig  <martin@ximian.com>
13646
13647         * mini.c
13648         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
13649         in the g_assert().
13650
13651 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
13652
13653         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
13654         the same way as the other arguments so they won't get clobbered.
13655
13656         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
13657         calls through R11 since it is clobbered by the trampoline code.
13658
13659 2004-11-26  Raja R Harinath  <rharinath@novell.com>
13660
13661         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
13662         pick up in-tree mscorlib.dll.
13663
13664 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
13665
13666         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
13667
13668         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
13669         runtime data/code are now stored in a table similar to the GOT in ELF. 
13670         This allows the code itself to be position independent.
13671
13672         * aot.c: Fix loading of referenced assemblies after the lazy assembly
13673         loading changes.
13674
13675         * aot.c: Attach ELF type (object/function) directives to all global
13676         symbols.
13677
13678         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
13679
13680         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
13681
13682         * mini-amd64.h: Turn on PIC AOT code.
13683
13684         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
13685         returning the offset within an OP_AOTCONST instruction where the GOT
13686         offset needs to be added.
13687
13688         * mini.h: Bump AOT file format version.
13689
13690 2004-11-25  Martin Baulig  <martin@ximian.com>
13691
13692         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
13693         uninflated generic methods.
13694
13695 2004-11-25  Martin Baulig  <martin@ximian.com>
13696
13697         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
13698
13699 2004-11-24  Martin Baulig  <martin@ximian.com>
13700
13701         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
13702         original klass (this only applies for generic instances).
13703
13704 2004-11-24  Martin Baulig  <martin@ximian.com>
13705
13706         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
13707         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
13708         that array).
13709
13710 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
13711
13712         * mini.c (mono_method_to_ir): Disable inlining for methods containing
13713         localloc. Fixes #69678.
13714
13715         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
13716         
13717 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
13718
13719         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
13720         used SSE registers on pinvoke calls. Fixes #69774.
13721
13722 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
13723
13724         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
13725         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
13726
13727 2004-11-23  Raja R Harinath  <rharinath@novell.com>
13728
13729         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
13730         Refer directly to the mcs/ tree.
13731
13732 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13733
13734         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
13735         Check if a trampoline for a synchronized method is required. 
13736
13737 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
13738
13739         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
13740         with localloc if needed. Throe arithmetric exception in
13741         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
13742         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
13743
13744 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
13745
13746         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
13747         types before switching on type.  Fixes #69622.
13748
13749 2004-11-19  Raja R Harinath  <rharinath@novell.com>
13750
13751         * Makefile.am (check-local): New.  Integrate into 'make check'.
13752         (MCS,RUNTIME): Define using in-tree mono and mcs.
13753         (ILASM): New.
13754         (%.exe): Use $(ILASM).
13755
13756 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
13757
13758         * mini-ppc.c: adjust initial prolog size (bug #69691).
13759
13760 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
13761
13762         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
13763         #69664.
13764
13765 2004-11-17  Raja R Harinath  <rharinath@novell.com>
13766
13767         * Makefile.am (clean-local): Rename from 'clean'.
13768
13769 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13770
13771         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
13772         to mono_arch_is_int_overflow. 
13773         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
13774         SIGFPE events.
13775
13776 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
13777
13778         * declsec.c|h: New files to support declarative security attributes.
13779         Added function to check if a method has (applicable) security.
13780         * mini.c|h: Add check for declarative security attributes in
13781         mono_method_check_inlining.
13782         * Makefile.am: Added declsec.c and declsec.h to the build.
13783
13784 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
13785
13786         * mini.c, mini.h: update to keep dynamic code info per-domain.
13787
13788 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
13789
13790         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
13791         (mini_init): Get rid of it from here too.
13792
13793 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
13794
13795         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
13796         implemented OP_RETHROW (patch by Geoff Norton
13797         <gnorton@customerdna.com>).
13798
13799 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
13800
13801         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
13802         between appdomains.  Fixes appdomain-unload on PPC.
13803
13804 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
13805
13806         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13807         mini-exceptions.c: handle the new wrapper types.
13808         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
13809         token value as a MonoClass* when compiling a wrapper.
13810         mono_jit_create_remoting_trampoline now takes an additional
13811         MonoRemotingTarget parameter.
13812         
13813 2004-11-10  Martin Baulig  <martin@localhost>
13814
13815         * mini.c (mono_method_to_ir): Use `generic_container->context'
13816         rather than creating a new one.
13817
13818 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13819
13820         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
13821
13822         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
13823
13824 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
13825
13826         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
13827         the experimental aot cache stuff.
13828
13829 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
13830
13831         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13832         mini-exceptions.c: update to exception clause structure changes.
13833
13834 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13835
13836         * exceptions-x86.c (throw_exception): Fix warnings.
13837
13838         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
13839         for OP_RETHROW.
13840
13841 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13842
13843         * exceptions-sparc.c (get_throw_exception): Really fix this.
13844
13845 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
13846
13847         * tramp-*.c: we no longer support icalls without wrappers, so
13848         a bit of code can be removed here
13849
13850 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
13851
13852         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
13853         patch.
13854
13855         * cpu-sparc.md: Add op_rethrow.
13856
13857         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
13858
13859         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
13860
13861         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
13862         * mini-ops.h: Add OP_RETHROW.
13863
13864         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
13865
13866         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
13867
13868 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
13869         
13870         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
13871         Makes the output much easier to read
13872
13873 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
13874
13875         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
13876         prevents another huge leak when compiling with ssa. Secondly, the
13877         performance of doing this rather than freeing the lists is much
13878         better. GList does a lock every time you allocate a list link,
13879         so that it can use a memory pool. So, it is better to just use
13880         a memory pool of our own.
13881         
13882         * ssa.c, linear-scan.c: replace g_list_remove_link with
13883         g_list_delete.  The remove one does not free the GList, so we were
13884         leaking memory. On -O=all --compile-all with corlib, this cut down
13885         3 MB of allocations.
13886
13887 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
13888
13889         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
13890
13891         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
13892
13893         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
13894         into a new function mono_create_jit_trampoline ().
13895
13896 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
13897
13898         * trace.c (get_spec): Allow tracing of classes without a namespace.
13899
13900 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
13901
13902         * mini.c: Fix pointer overwrite in mini_method_compile.
13903
13904 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
13905
13906         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
13907         The darwin ABI needs some special handling for 1 and 2 byte structs
13908         Lets use lbz/lhz instead of lwz everywhere.
13909         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
13910         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
13911         Use stb/sth for the former, and put the latter always on stack instead of in
13912         argument registers.
13913
13914 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
13915
13916         * trace.c (is_filenamechar): Add '_'.
13917
13918 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
13919
13920         * mini-s390.c: Fix prolog length to allow for large trace requirements.
13921
13922         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
13923
13924 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
13925
13926         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
13927         depends on libmonogc. Fixes #68805.
13928
13929 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
13930
13931         * mini.c (mono_jit_free_method): Provide extra information for
13932         this error.  Currently this leaks, but will be turned into a
13933         developer option in the future.
13934
13935 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
13936
13937         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
13938
13939 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
13940
13941         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
13942         boundary. Fixes reading of PATCH_INFO_R4 and R8.
13943         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
13944
13945 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
13946
13947         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
13948         trampolines for AOT code.
13949
13950 2004-10-22    <vargaz@freemail.hu>
13951
13952         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
13953         constructed types. Fixes #68136.
13954
13955 2004-10-21  Martin Baulig  <martin@ximian.com>
13956
13957         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
13958         if it returns true, unwind the stack to the call instruction.
13959
13960 2004-10-21    <vargaz@freemail.hu>
13961
13962         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
13963
13964         * mini.h: Bump AOT version number.
13965
13966         * objects.cs: Add another test for unbox trampolines.
13967
13968         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
13969         valuetype methods.
13970
13971 2004-10-20    <vargaz@freemail.hu>
13972
13973         * driver.c: Add SHARED to the set of optimizations tested.
13974
13975         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
13976
13977         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
13978         used by CEE_NEWARR.
13979
13980         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
13981
13982 2004-10-20  Martin Baulig  <martin@ximian.com>
13983
13984         * mini-exceptions.c (mono_handle_exception): Call
13985         mono_debugger_handle_exception() to tell the debugger about
13986         catch/finally clauses.
13987
13988 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
13989
13990         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
13991
13992         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
13993         #68447.
13994
13995 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
13996
13997         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
13998         methods as their native size, fixed bug #57543, #57545.
13999         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
14000         This saves a temporary register and mullw call down into 1 (minor perf
14001         increase for cases like sum = sum * 5;  This use to translate into:
14002             li r11,5
14003             mullw r28,r28,r11
14004         It now translates to
14005             mulli r28,r28,5
14006
14007 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
14008
14009         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
14010         #68388.
14011
14012 2004-10-11  Martin Baulig  <martin@ximian.com>
14013
14014         * mini.c (mono_method_to_ir): If we're a generic method, get the
14015         MonoGenericContainer from our MonoMethodNormal and create a
14016         MonoGenericContext from it.
14017
14018 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
14019
14020         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
14021
14022         * basic-long.cs: Add test for checked i8->i2 cast.
14023
14024 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14025
14026         * inssel-ppc.brg: added a couple of speedup rules.
14027
14028 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
14029
14030         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
14031         to speed up rebuilds.
14032
14033 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14034
14035         * mini-s390.c: Minor fix to OP_OR_IMM.
14036
14037 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
14038
14039         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
14040         better. Fixes appdomain-unload.exe on sparc.
14041
14042 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
14043
14044         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
14045         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
14046         see bug 67324.
14047
14048 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
14049
14050         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
14051
14052 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
14053
14054         * mini.c: Always generate a field read/write wrapper for members
14055         of the class MarshalByRefObject since the actual instance could
14056         be a CBO.
14057
14058 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
14059
14060         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
14061
14062 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
14063
14064         * driver.c mini.h trace.c: Move the setting of the main assembly into
14065         a separate function called mono_trace_set_assembly () and call it after
14066         actually loading the main assembly. Fixes #66872.
14067
14068 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
14069
14070         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
14071         using the code manager.
14072
14073 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
14074
14075         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
14076
14077 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
14078
14079         * cpu-amd64.md: Fix bug in previous patch.
14080         
14081         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
14082         #66650.
14083
14084 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
14085
14086         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14087         mini-exceptions.c: updates for changed stack walk interface.
14088
14089 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14090
14091         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
14092
14093 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
14094
14095         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
14096
14097 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
14098
14099         * driver.c (mini_regression_list): Do not call mono_assembly_close 
14100         since assemblies can't be unloaded.
14101         
14102 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14103
14104         * cpu-amd64.md: Fix more instruction lengths.
14105
14106         * cpu-amd64.md: Fix lengths of some instructions.
14107
14108 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
14109
14110         * inssel.brg: Make the array ldelema check aot friendly.
14111
14112 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14113
14114         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
14115
14116         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
14117
14118 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
14119
14120         * mini-x86.c: Fix build.
14121
14122         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
14123         mono_type_get_underlying_type () helper function to simplify code.
14124         
14125 2004-09-09  Martin Baulig  <martin@ximian.com>
14126
14127         * mini-amd64.c: Don't access `type->data.klass' directly, call
14128         mono_class_from_mono_type() instead since the type may be a
14129         generic instance.
14130
14131 2004-09-09  Martin Baulig  <martin@ximian.com>
14132
14133         * mini-amd64.c (get_call_info): Fix support for generic instances.
14134         (add_valuetype): Use mono_class_from_mono_type() to get the class
14135         since we can be a generic instance.
14136
14137 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
14138
14139         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
14140
14141 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
14142
14143         * liveness.c: reset spill costs on each scan: bug 62107
14144
14145 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
14146
14147         * exceptions-sparc.c (mono_arch_find_jit_info): remove
14148         unnecessary line that doesn't compile
14149
14150 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
14151
14152         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
14153         trampolines, make them call an error function so people can fix their
14154         code.
14155
14156 2004-09-06  Martin Baulig  <martin@ximian.com>
14157
14158         * mini.c (mono_method_to_ir): When initializing locals, handle a
14159         generic instances like a valuetype if it's a valuetype and like a
14160         class if it's a class.
14161
14162 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14163
14164         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
14165         stack. Fixes #64674.
14166
14167         * exceptions.cs: Add test for unwinding of call arguments.
14168
14169 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
14170
14171         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
14172         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
14173         set the carry/borrow flag). The sparc and s390 implementations
14174         can now use optimized versions (and simplify the code). ppc bugfixes.
14175
14176 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14177
14178         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
14179
14180 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
14181
14182         * inssel-amd64.brg: Remove leftover 32 bit rule.
14183
14184         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
14185
14186 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
14187
14188         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
14189         mono_arch_find_jit_info functions into a new function. Fix a memory
14190         leak.
14191
14192         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
14193         refactored code.
14194         
14195 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14196
14197         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
14198         as well.
14199         
14200         * exceptions.cs: Add array size tests.
14201
14202         * mini.c: Allocate a separate icall wrapper for each arity of 
14203         mono_array_new_va. Fixes #59509.
14204
14205         * exceptions.cs: Add testcase for 64578.
14206
14207         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
14208
14209         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
14210         
14211 2004-09-02  Martin Baulig  <martin@ximian.com>
14212
14213         * mini.c (mono_method_to_ir): When initializing the locals, call
14214         handle_initobj() on the generic instance itself, not its
14215         underlying type.
14216
14217 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14218
14219         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
14220         MonoJitInfo for dynamic methods.
14221
14222         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
14223
14224         * mini.c: Add support for freeing JIT data for dynamic methods.
14225         
14226 2004-09-01  Martin Baulig  <martin@ximian.com>
14227
14228         * mini-x86.c (is_regsize_var): Added support for generic
14229         instances.
14230         (mono_arch_emit_prolog): Make this compile again, use
14231         `x86_push_imm_template (code)'.
14232
14233 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
14234
14235         * mini-x86.c: make all push_imm instructions that get
14236         patched always emit the long form
14237
14238 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
14239
14240         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
14241         in a per-domain hash.
14242
14243         * mini-amd64.c (merge_argument_class_from_type): Handle generic
14244         types.
14245
14246 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
14247
14248         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
14249         work.
14250         
14251         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
14252         work.
14253
14254         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
14255         Beginnings of SSE2 support.
14256
14257         * exceptions.cs: Add more tests for checked int<->uint casts.
14258
14259 2004-08-28  Martin Baulig  <martin@ximian.com>
14260
14261         * mini-x86.c (mono_arch_instrument_epilog): Added support for
14262         generic instances.
14263
14264         * mini.c
14265         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
14266         Handle generic instances recursively.
14267
14268 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14269
14270         * iltests.il: test for conv.u8 on a constant
14271
14272 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14273
14274         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
14275         LCONV_x4 (shrun_32 (membase)).
14276
14277 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14278
14279         * inssel-x86.brg: c&p rules for push/setret of long
14280
14281 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14282
14283         * inssel-x86.brg: c&p rules for compare (base, regvar) and
14284         compare (regvar, base)
14285
14286         * inssel-x86.brg: more burg love
14287
14288         * inssel.brg: more cleanup
14289
14290         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
14291
14292 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14293
14294         * basic-long.cs, basic-calls.cs: new tests for optimization.
14295
14296 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
14297
14298         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
14299         patch.
14300
14301 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14302
14303         * mini-amd64.c (read_tls_offset_from_method): Add another case.
14304         
14305 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
14306
14307         * inssel.brg (mini_emit_memcpy): use 
14308         NO_UNALIGNED_ACCESS to disable memcpy optimization
14309
14310 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14311
14312         * mini-amd64.c: Handle generic types in various places.
14313
14314         * mini.c (mono_method_to_ir): Handle generic types in init locals.
14315
14316 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
14317
14318         * mini.c (handle_box): Fix warning.
14319
14320         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
14321
14322         * mini-amd64.h: Enable the emit_state optimization.
14323
14324         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
14325
14326         * mini-amd64.c: Add some new 64 bit peephole opts.
14327
14328         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
14329
14330         * cpu-amd64.md: sreg1 of div instructions must be %rax.
14331
14332         * mini-amd64.c: Register allocator fixes.
14333
14334         * mini.c: Add an optimization to emit_state to avoid allocation of new
14335         registers on some platforms.
14336
14337 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
14338
14339         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
14340
14341         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
14342         allocation. Fixes #63085.
14343
14344         * basic-long.cs: Add new regression test.
14345
14346         * mini-amd64.c: Register allocator improvements.
14347
14348 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
14349
14350         * mini-amd64.c (read_tls_offset_from_method): Add another code
14351         sequence.
14352
14353         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
14354         instruction sequence for nullifying class init trampolines.
14355
14356         * objects.cs: Add new regalloc test.
14357
14358         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
14359
14360 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14361
14362         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
14363         
14364         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
14365         arguments.
14366
14367         * driver.c: Fix profiling after TLS changes.
14368         
14369         * driver.c (mono_main): Set mono_stats.enabled if needed.
14370
14371         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
14372         CEE_BOX.
14373
14374 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
14375
14376         * mini-x86.c: use a 1 op rather than a 2 op tls access
14377         instruction -> faster.
14378
14379 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14380
14381         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
14382         x86 backend.
14383
14384 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
14385
14386         * exceptions-sparc.c (throw_exception): fix typo
14387
14388 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
14389
14390         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
14391         set tree->dreg correctly with tls. Allow any
14392         register to be used.
14393
14394         * mini-x86.c (read_tls_offset_from_method): add new code
14395         generation pattern seen with GCC.
14396
14397
14398 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
14399
14400         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
14401         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14402         exceptions-sparc.c: fix some performance issues in exception
14403         handling and setting of the stack trace for exceptions that were
14404         already thrown.
14405
14406 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14407
14408         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
14409         x86 backend.
14410         
14411         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
14412         registers.
14413
14414 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
14415
14416         This patch inlines tls access, when possible.
14417         
14418         * mini.h: new arch functions for TLS intrinsics.
14419         All platforms updated with a stub.
14420
14421         * mini.c: use the new intrinsics
14422
14423         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
14424         arch specific intrinsic for tls variables
14425
14426 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14427
14428         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
14429         under windows.
14430
14431 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14432
14433         * mini.c: thread local allocation
14434
14435 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
14436
14437         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
14438
14439         * Makefile.am: Link against the static version of libmonogc.
14440         
14441         * Makefile.am: Link the static versions of the convenience libraries
14442         into the mono executable.
14443
14444         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
14445
14446 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
14447
14448         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
14449         on integer overflow.
14450
14451         * mini-amd64.c: Reorganize function call code.
14452
14453         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
14454
14455 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14456
14457         * inssel-x86.brg: use xor eax,eax.
14458         
14459         * basic.cs: new tests
14460
14461 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14462
14463         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
14464         in exception throwing code.
14465         
14466 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14467
14468         * inssel-x86.brg: use xor esi,esi.
14469
14470 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14471
14472         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
14473         can trace methods compiled during mini_init () too.
14474
14475         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
14476         CEE_CONV_U4.
14477
14478 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14479
14480         * Makefile.am: static link on x86 (r=zoltan)
14481
14482 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14483
14484         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
14485         code since it causes some programs to fail.
14486
14487 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
14488
14489         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
14490
14491 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14492
14493         * mini.c: ovfops_op_map - add STACK_OBJ case for
14494         CONV_I 
14495         * basic.cs: add test_0_pin_string as test
14496         case for above.
14497
14498 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14499
14500         * Makefile.am: build C# if srcdir != builddir
14501
14502 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
14503
14504         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
14505         fall-through blocks.
14506
14507 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
14508
14509         * driver.c: enable loop by default again and include abcrem in -O=all.
14510
14511 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
14512
14513         * iltests.il: Add some localloc tests.
14514
14515         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
14516
14517         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
14518         Fixes #62574.
14519
14520         * inssel-amd64.brg: Add some optimizations.
14521
14522         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
14523         for gcc-3.4.
14524
14525         * Makefile.am: Statically link mono against libmono on AMD64.
14526         
14527         * mini-amd64.c inssel-amd64.brg: Optimizations.
14528
14529 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
14530
14531         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
14532
14533         * tramp-amd64.c: Patch calling code in trampolines.
14534
14535 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
14536
14537         * mini-amd64.c: pinvoke struct passing fixes.
14538
14539 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
14540
14541         * mini-sparc.c: redo change, make mono_arch_cpu_init call
14542         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
14543
14544 2004-08-05  Duncan Mak  <duncan@ximian.com>
14545
14546         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
14547         CEE_LDELEM_ANY.
14548
14549 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14550
14551         * mini-amd64.c (emit_move_return_value): Move return value for normal
14552         calls too.
14553
14554 2004-08-05  Martin Baulig  <martin@ximian.com>
14555
14556         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
14557         `type->type'; just modify `type' itself when dealing with enums
14558         and generic instances.
14559         (check_call_signature): Make `simple_type' a `MonoType *'.
14560
14561 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14562
14563         * mini.c: Use OP_PADD to add offsets to addresses.
14564
14565         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
14566
14567 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
14568
14569         * mini-sparc.c (mono_arch_emit_epilog): fix check
14570         for folding last op into restore instruction
14571
14572 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14573
14574         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
14575         helper methods using the code manager.
14576         
14577         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
14578
14579         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
14580
14581 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14582         
14583         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
14584           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
14585
14586         * mini-s390.c: fix tail processing
14587
14588 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
14589
14590         * mini-ppc.c: mul.ovf.un exception name fix.
14591
14592 2004-08-03  Martin Baulig  <martin@ximian.com>
14593
14594         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
14595         instances; before jumping to `handle_enum', also modify `ptype'.
14596
14597 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
14598
14599         * cpu-sparc.md: fcall maximal length too small.
14600
14601 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
14602
14603         * mini-amd64.c mini.h: Add initial support for passing/returning 
14604         structures to/from pinvoked methods.
14605
14606 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
14607
14608         * mini-ppc.c: reg allocator fix.
14609
14610 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
14611
14612         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
14613
14614         * inssel.brg: Optimize memset on 64 bit machines.
14615
14616         * mini-amd64.c: Fix some vararg cases.
14617
14618 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14619
14620         * mini-s390.c: Corrected macro in emit_float_to_int
14621
14622         * s390-abi.cs: Tests to exercise the s390 ABI
14623
14624 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14625
14626         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
14627         caller saved regs.
14628
14629         * basic.cs: Add a test for add.ovf.un.
14630
14631 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
14632
14633         * mini-sparc.c: add case for OP_IDIV_UN
14634
14635 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14636
14637         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
14638         
14639         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
14640
14641 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
14642
14643         * basic.cs: regression tests.
14644
14645         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
14646         regressions.
14647
14648 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14649
14650         * basic.cs: Add a new test.
14651
14652         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
14653         and AOT. Various fixes and optimizations.
14654
14655         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
14656
14657 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
14658
14659         * mini-ppc.c: make sure temp regs are not used for global reg
14660         allocation.
14661
14662 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
14663
14664         * cpu-sparc.md: conv_i8 fix for 64bits
14665
14666         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
14667
14668 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
14669         
14670         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
14671         add opcode for cmp BYTE PTR [eax], imm.
14672
14673         * inssel.brg: Make memcpy and memset takes bases.
14674
14675 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14676
14677         * *-amd64.*: More AMD64 work.
14678         
14679 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14680
14681         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
14682         add a compare-not-equal opcode.
14683         
14684 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
14685
14686         * mini.c: Use mono_init_from_assembly instead of mono_init.
14687         
14688 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14689
14690         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
14691
14692         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
14693
14694         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
14695
14696         * inssel.brg: 64 bit fixes.
14697
14698         * mini.h (MonoCallInst): Add some AMD64 specific data.
14699
14700         * mini.h: Add some OP_P opcodes.
14701
14702 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14703
14704         * basic.cs: tests for 61797 and 61740
14705
14706 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
14707
14708         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
14709         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
14710
14711 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
14712
14713         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
14714
14715         * *-amd64*.*: Ongoing AMD64 work.
14716
14717 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
14718
14719         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
14720
14721         * *-amd64*: Ongoing AMD64 work.
14722
14723         * mini-arch.h: Add AMD64 support.
14724
14725         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
14726
14727         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
14728
14729         * mini-ops.h: Add new opcodes.
14730
14731         * Makefile.am: Add AMD64 support.
14732
14733         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
14734         rules into the inssel-long*.brg files.
14735
14736         * *-amd64.*: Add beginnings of AMD64 backend.
14737
14738 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
14739
14740         * mini.c (print_dfn): commenting out the code that prints
14741         the cil. With -O=deadce, this makes -v -v crash.
14742         
14743         * cpu-pentium.md: make checkthis have a length of 2
14744
14745 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
14746
14747         * mini-sparc.h: fix implementations of __builtin
14748         functions for Sun compiler for V9.
14749
14750 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
14751
14752         * mini.c: use the new stelem.ref wrapper
14753         * exceptions.cs, arrays.cs: new stelem.ref tests
14754
14755 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14756
14757         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
14758         new XSP should work with these changes).
14759
14760 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
14761         
14762         * inssel-{long32,x86,}.brg: trivial optimizations.
14763         
14764 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
14765
14766         * mini.c: load value when emitting box operation in
14767         constrained calls.
14768
14769 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
14770
14771         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
14772         is one byte shorter than cmp DWORD PTR [eax], 0.
14773
14774 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
14775
14776         * inssel-ppc.brg: arguments on the stack are always
14777         relative to the stack pointer (spotted by Neale Ferguson).
14778
14779 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14780
14781         * exceptions-x86.c: delay appending the method name to the trace until
14782         after mono_jit_info_table_find is called, as this gets the real
14783         MonoMethod.
14784
14785 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
14786
14787         * aot.c: register roots
14788
14789 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14790
14791         * aot.c : I could just use PLATFORM_WIN32 flag.
14792
14793 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14794
14795         * aot.c : Reverting the previous fix. This time it broke linux build.
14796
14797 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14798
14799         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
14800
14801 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
14802
14803         * mini.c (handle_stack_args): Remove some more debugging code.
14804         
14805         * mini.c (handle_stack_args): Remove debug output left in by mistake.
14806
14807         * driver.c mini.h aot.c: Allow additional options to be specified with
14808         --aot and pass them to mono_compile_assembly.
14809
14810         * aot.c: Add experimental code to AOT compile all loaded assemblies
14811         on demand and save the code into a cache in the filesystem.
14812
14813         * aot.c: Add support for more wrapper methods.
14814         
14815         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
14816         58863.
14817
14818         * cpu-*.md: Remove removed opcodes.
14819
14820         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
14821         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
14822         related icalls to marshal.c.
14823
14824 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
14825
14826         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
14827
14828         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
14829
14830         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
14831
14832 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
14833         * liveness.c: If liveness is recomputated we need to reset the information
14834         for each variable. This way, if the liveness range has been narrowed
14835         by optimizations that happened after the last computation, we can return
14836         a smaller range.
14837         
14838         For example, if you have
14839         
14840         {
14841                 int i = 0;
14842                 
14843                 // Tons of code that does not affect i
14844                 
14845                 i = foo ();
14846                 ...
14847         }
14848         
14849         i = 0 is dead code and will be removed by SSA. However, when
14850         linear scan gets to the code, i will still appear to be live
14851         throughout the entire block. This prevents good register allocation.
14852
14853 2004-07-06  Martin Baulig  <martin@ximian.com>
14854
14855         * debug-mini.c (mono_debug_init_method): Allow
14856         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
14857         (mono_debug_add_icall_wrapper): New method.
14858
14859         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
14860
14861 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
14862
14863         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
14864         optimization.
14865
14866 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
14867
14868         * aot.c (mono_aot_load_method): Fix loading of debug info.
14869
14870 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14871
14872         * aot.c: Add logging support.
14873
14874 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14875
14876         * mini.h: Add prototype for mono_print_method_from_ip.
14877
14878         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
14879
14880         * inssel.brg: 64 bit fixes.
14881
14882         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
14883         inssel-long32.brg.
14884
14885         * Makefile.am: Add SPARC64 support.
14886
14887 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14888
14889         * aot.c: Fix alignment problems on 32 bit platforms.
14890
14891 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14892
14893         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
14894         SPARC64.
14895
14896         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
14897         problems.
14898
14899         * mini.h: Bump AOT file version. Some 64 bit fixes.
14900
14901 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14902
14903         * inssel-sparc.brg: Add new rule to avoid register moves.
14904
14905         * inssel.brg: Add ldind_to_load_membase helper function.
14906
14907 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
14908
14909         * mini.c: OffsetToStringData intrinsic.
14910         
14911 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14912
14913         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
14914
14915         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
14916         regression tests.
14917
14918         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
14919 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
14920
14921         * mini.c: reinstated mono_compile_get_interface_var()
14922         on x86, too, since the change breaks the Gtk# build there as well.
14923
14924 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14925
14926         * driver.c: remove loop from the default optimizations: it seems to
14927         interact badly with some of the other options (see bug #60613).
14928
14929 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
14930
14931         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
14932         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
14933
14934 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
14935
14936         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
14937         vararg-using methods.
14938
14939 2004-06-21  Martin Baulig  <martin@ximian.com>
14940
14941         * mini/mini-exceptions.c
14942         (mono_handle_exception): Added `gpointer original_ip' argument.
14943         After calling mono_unhandled_exception(), call
14944         mono_debugger_unhandled_exception() and if that returns true,
14945         restore the context and return.
14946
14947 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
14948
14949         * mini-ppc.c: prefer the use of relative branches so
14950         they won't need to be patched in aot code (patch from Patrick Beard).
14951
14952 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
14953
14954         * aot.c: patch from Patrick Beard to make the output assembly
14955         more correct for the MacOSX assembler. Small tweak to
14956         generate sane images on Linux/PPC, too.
14957
14958 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14959
14960         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
14961         case until bug #59509 is fixed (shows up in #60332).
14962
14963 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
14964
14965         * mini.c: make sure the needed wrappers are compiled, too, with
14966         precomp.
14967
14968 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
14969
14970         * driver.c: remove NPTL reference in --version output.
14971
14972 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14973
14974         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
14975         generate valid assembly for the Mach-O assembler.
14976
14977 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
14978
14979         * driver.c: don't include abcrem in the all optimization specifier
14980         since it slows down jit compilation too much for now.
14981
14982 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
14983
14984         * mini.c: use BIGMUL only if both operands have the same signage.
14985         * iltests.il: Test for bug 60056. (errors related to signage in
14986         BIGMUL).
14987
14988         r=lupus.
14989
14990 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
14991
14992         * mini.c, aot.c: memory leak fixes.
14993
14994 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
14995
14996         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
14997
14998 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
14999
15000         * Makefile.am: remove the -static hack completely, it links in
15001         statically glib as well.
15002
15003 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
15004
15005         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
15006         * exceptions.cs: make it compile with new mcs/csc.
15007
15008 2004-06-03 Massimiliano Mantione <massi@ximian.com>
15009         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
15010         and added relevant test case.
15011
15012 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
15013
15014         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
15015         regressions in gtk-sharp.
15016
15017 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
15018
15019         * exceptions.cs: New regression tests.
15020
15021         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
15022
15023 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
15024
15025         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
15026
15027 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
15028
15029         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
15030
15031         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
15032
15033 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
15034
15035         * mini.c (mono_jit_runtime_invoke): Init class in this
15036         method instead of trusting mono_jit_compile_method to
15037         do the work (because wrappers can be in object class)
15038
15039 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
15040
15041         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
15042
15043         * basic-long.cs: New regression test.
15044
15045 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
15046
15047         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
15048         and div/rem checks.
15049
15050 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
15051
15052         * Makefile.am: fix miguel's change to build mono statically against
15053         libmono (track build dependencies).
15054
15055 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15056
15057         * cfold.c: Some glib versions do not have G_MININT32.
15058
15059 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
15060
15061         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
15062         with precision of tan, atan, sin and cos, and implemented related
15063         regressions tests (fixes bug 54467, but one new problem appeared and
15064         is not fixed yet).
15065
15066 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15067
15068         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
15069
15070         * exceptions.cs: Add test for constant folding && division by zero.
15071
15072         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
15073         since driver.c is in libmono too, so the optimization was useless.
15074
15075         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
15076         variable to driver.c so the compiler can emit more efficient code to
15077         access them.
15078
15079 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15080
15081         * Makefile.am: don't distribute generated inssel.[ch] files.
15082
15083 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
15084
15085         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
15086         into the default appdomain. Fixes #58707.
15087
15088         * jit-icalls.c: Remove the broken approximation for truncl, doing
15089         no conversion is better.
15090
15091         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
15092         Fixes #58863.
15093
15094 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
15095
15096         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
15097         of the mcrxr instruction which is not available on some processors
15098         even if it's documented to be. Implement add and sub overflow correctly
15099         (still not complete for long unsigned). Speed up icalls a bit.
15100
15101 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
15102
15103         * mini.c (mono_jit_compile_method_with_opt): Make sure that
15104         we run .cctor in the current domain instead of target_domain.
15105         
15106         Fixes bug #58558, .cctor not being called in -O=shared.
15107
15108 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15109
15110         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
15111
15112 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
15113
15114         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
15115         which can be done with an imm8, do it that way.
15116         (mono_arch_output_basic_block): ditto for a jmp
15117         (mono_arch_emit_prolog): Computate maximum offset of a label.
15118
15119 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
15120
15121         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
15122         now tries to allocate prefered physical reg's for virtual
15123         regs. This reduces the number of emited spills/loads with
15124         20-30% on our core assemblies.
15125
15126 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15127
15128         * jit-icalls.c: truncl() is not needed and trunc() is
15129         the correct thing to do anyway (bug #58287).
15130
15131 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
15132
15133         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
15134         if available.
15135
15136 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
15137
15138         * driver.c: enable loop optimizations by default.
15139
15140 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
15141
15142         * mini-x86.c: fix calc of max loop size when aligning loops start.
15143
15144 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
15145
15146         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
15147         the stack.
15148
15149 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
15150
15151         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
15152         should set carry.
15153
15154         * basic-long.cs: Add tests for add/subtract of immediates with carry.
15155
15156         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
15157         
15158         * mini.c (inline_method): Allways inline some wrappers even if the cost
15159         is too large. Fixes #58785.
15160
15161         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
15162         
15163 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
15164
15165         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
15166         (crichton@gimp.org). Beginning of support for sparc/linux.
15167
15168         * mini-sparc.c: Optimize retrieval of LMF address.
15169
15170 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
15171
15172         * exceptions-ppc.c:  handle alloca in methods with clauses.
15173
15174 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
15175
15176         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
15177
15178 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
15179
15180         * mini.c: Delegate most of the abort signal work to 
15181           mono_thread_request_interruption, which also handles Stop and Suspend
15182           states.
15183
15184 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
15185
15186         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
15187         supports the save/restore lmf opcodes.
15188
15189 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
15190
15191         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
15192         by gcc-3.4 as well.
15193
15194         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
15195
15196 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15197
15198         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
15199         methods which contain array accesses.
15200
15201         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
15202         boundaries. Fixes #58537.
15203
15204         * iltests.il: Add regression test for #58537.
15205
15206 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
15207
15208         * mini-x86.c (mono_arch_local_regalloc): Last part of
15209         fix for bug #58633 (releasing register to early).
15210
15211 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
15212
15213         * basic-long.cs: Add new regression test.
15214
15215 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
15216
15217         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
15218         register too early on the chain.
15219
15220 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15221
15222         * mini.c (create_helper_signature): Use a helper function to reduce
15223         the code which needs to be written. Also set the calling convention of
15224         icalls on windows. Fixes #57840.
15225
15226 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
15227
15228         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
15229         exceptions-ppc.c: added helper function to get the instruction address
15230         from a signal handler context.
15231
15232 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15233
15234         * helpers.c: use g_get_tmp_dir. Invokes happyness 
15235         from gonzalo.
15236
15237 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15238
15239         * helpers.c: Add new env variable to pass args to objdump.
15240         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
15241
15242 2004-05-17  Radek Doulik  <rodo@ximian.com>
15243
15244         * Makefile.am (common_sources): added abcremoval.h so it get
15245         disted and daily mono packages on go-mono.com will build again
15246
15247 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
15248
15249         * abcremoval.c: Fixed coding style, added copyright header.
15250
15251         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
15252
15253         * mini.h: Added prototype for abc removal main function.
15254
15255         * build_relations_propagation_table.pl: Added copyright header.
15256
15257 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
15258
15259         * basic-long.cs: reg test for complex ceq_long bug.
15260
15261 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
15262
15263         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
15264         reg in long and clob case (bug #58343). Fixed/added comments.
15265
15266 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
15267
15268         * mini.c (mono_jit_runtime_invoke): Follow new convention
15269         of calling the invoke method with an function pointer.
15270
15271 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
15272
15273         * ChangeLog: Fix author of memory leak patch.
15274
15275 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
15276
15277         * Makefile.am: fix make dist as well...
15278
15279
15280 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
15281
15282         * cfold.c: Made so that conversions from pointer to int4 are no-ops
15283         on archs where pointers are 4 bytes long.
15284
15285         * Makefile.am: Added abcremoval.c source file.
15286
15287         * abcremoval.c: Added abcremoval.c.
15288
15289         * abcremoval.h: Added abcremoval.h.
15290
15291         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
15292
15293         * inssel.brg: Enabled bounds check removal.
15294
15295         * mini.c: Added support for abcrem optimization.
15296
15297         * mini.h: Added abcrem optimization label.
15298
15299         * driver.c: Added support for abcrem optimization.
15300
15301         * propagated_relations_table.def: Added propagated_relations_table.def.
15302
15303 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
15304
15305         * mini.c, cfold.c: fix style.
15306
15307 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15308
15309         * mini.c: handle issue with the low-level implementation of
15310         some long opcodes (bug #54209).
15311
15312 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
15313
15314         * basic.cs: test for my new cmov stuff.
15315
15316 2004-05-13      Patrik Torstensson
15317
15318         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
15319         opt and added peephole documentation.
15320
15321 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
15322
15323         * tramp-ppc.c: rewrote the generic trampoline code.
15324
15325 2004-05-11      Patrik Torstensson
15326
15327         * mini-x86.c: optimize long shl/shr asm code (one less branch)
15328
15329 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
15330
15331         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
15332
15333         * mini.h mini.c dominators.c: Applied patch from Derek Woo
15334         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
15335
15336         * mini.c: Add new icalls for AsAny marshalling.
15337
15338 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
15339
15340         * tramp-ppc.c, mini-ppc.c: more cleanups.
15341
15342 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15343
15344         * mini.c: no warnings.
15345
15346 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15347
15348         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
15349
15350 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
15351
15352         * mini.c: In the thread abort signal handler, if the thread is in the
15353         process of being stoped, don't throw the Abort exception, just stop the
15354         thread.
15355
15356 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
15357
15358         * tramp-ppc.c: removed old code.
15359
15360 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15361
15362         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
15363         do some simple speed optimizations on ppc.
15364
15365 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
15366
15367         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
15368         and large offsets in load/store.
15369
15370 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15371
15372         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
15373         it causes regressions.
15374
15375 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15376
15377         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
15378         support.
15379
15380 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15381
15382         * jit-icalls.c: remove warnings.
15383         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
15384         speedups for unsafe code.
15385
15386 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
15387
15388         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
15389
15390 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
15391
15392         * basic-calls.cs: Add new regression test.
15393
15394         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
15395         more portable.
15396
15397         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
15398
15399         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
15400         is no longer used.
15401
15402 2004-05-06      Patrik Torstensson
15403
15404         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
15405         long reg allocation in any reg (not only eax:edx) and implemented 
15406         long shl/shr ops in asm instead of helpers.
15407
15408 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
15409
15410         * mini-sparc.h: Fix warnings.
15411
15412         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
15413         stack.
15414
15415         * mini-exceptions.c (mono_handle_exception): Call the filter in a
15416         separate statement for clarity.
15417
15418         * mini-sparc.c: Update status.
15419
15420 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
15421
15422         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
15423         here.
15424
15425 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15426
15427         * inssel-ppc.brg: another small pre-release workaround:
15428         we don't do overflow detection for long_sub_un.
15429
15430 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15431
15432         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
15433         (also works around a weird ppc bug: 57957).
15434
15435 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
15436
15437         * tramp-ppc.c: trampoline fixes.
15438
15439 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
15440
15441         * mini-ppc.c: fixed typos.
15442
15443 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
15444
15445         * mini-ppc.c, exceptions-ppc.c: more code saves registers
15446         at the top of the stack. Fixed typos. Use a frame registers
15447         for all the methods with exception clauses.
15448
15449 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15450
15451         * exceptions-ppc.c: restore fp registers.
15452
15453 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
15454
15455         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
15456         order from the stack top (moved the stack room to save the
15457         return value for trace after the param area). Fixed corruption
15458         in restoring registers on unwind.
15459
15460 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15461
15462         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
15463
15464 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15465
15466         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
15467         and prolog/epilog for methods that use it. Allow
15468         enough param area room for varargs methods. Fix miguel's
15469         breakage in exception handling.
15470
15471 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15472
15473         * Makefile.am: run genmdesc only on current arch.
15474
15475 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15476
15477         * exceptions-x86.c:
15478         * mini-x86.h: fix the build on windows.
15479
15480 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
15481
15482         * 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.
15483
15484         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
15485
15486         * mini-exceptions.c: New file.
15487         
15488         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
15489         Move some parts of the x86 exception handling code to an 
15490         arch-independent file so it can be shared with other ports.
15491
15492 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
15493
15494         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
15495
15496 2004-04-26  David Waite  <mass@akuma.org>
15497
15498         * driver.c: remove comma from end of enumeration declaration
15499
15500 2004-04-26  Jackson Harper  <jackson@ximian.com>
15501
15502         * driver.c: parse config file before loading first assembly. This
15503         allows the user gac to be enabled/disabled. 
15504         
15505 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
15506
15507         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
15508         simpler mechanism: we do not care what is encoded initially
15509         (branch absolute or relative), we care about the code and its
15510         target.  I kept the old code for reference for now.
15511
15512         The new code tries first to determine if the jump is anywhere in
15513         the -/+32 absolute meg range, if it succeeds, it encodes using the
15514         absolute branch;  If not, it tried to find something in the
15515         relative range, if not, it uses the handle_thunk code. 
15516
15517 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
15518
15519         * exceptions-ppc.c: use the correct ip register on macosx.
15520
15521 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
15522
15523         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
15524
15525 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
15526
15527         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
15528         Raise exception on integer divide by zero by hand since the hw
15529         doesn't support it. Handle NaNs in FP compares.
15530
15531 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
15532
15533         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
15534         code reducing duplication between the platforms and enabled
15535         signal exception handling (on linux for now).
15536
15537 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
15538
15539         * exceptions-ppc.c: more macosx support.
15540
15541 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15542
15543         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
15544
15545 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
15546
15547         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
15548
15549 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
15550
15551         * iltests.il: more tests.
15552
15553 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15554
15555         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
15556         vars as well.
15557
15558 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
15559
15560         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
15561
15562 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15563
15564         * liveness.c: Mark variables as volatile in all basic blocks reachable
15565         from exception clauses.
15566
15567 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
15568
15569         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
15570         inlining.
15571
15572 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
15573
15574         * iltests.il, basic.cs: more tests for regalloc.
15575
15576 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15577
15578         * iltests.il: Some tests for register allocation modifications
15579         I have locally.
15580
15581 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
15582
15583         * exceptions.cs: Add regression test for bug #56782.
15584
15585         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
15586         original stack trace if an exception is rethrown. Fixes #56782. Oh,
15587         the beauty of fixing the same thing in 5 different files...
15588
15589 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
15590
15591         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
15592         methods.
15593
15594 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
15595
15596         * mini.c: Add support for STRWLPARRAY marshalling convention.
15597
15598 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
15599
15600         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
15601         to init the context to setup the regs pointer).
15602
15603 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15604
15605         * exceptions-ppc.c: more exceptions work.
15606
15607 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15608
15609         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
15610         not allowed.
15611
15612 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15613
15614         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
15615         can use the memory directly.
15616
15617         * cpu-pentium.md: Update documentation from a post from Zoltan. 
15618
15619         add x86_add_membase, x86_sub_membase, x86_mul_membase
15620
15621 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15622
15623         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
15624         GENERAL_REGS they were also hardcoded for all PPC ports.
15625
15626         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
15627
15628         Remove hard-coded limit for floating point registers, use
15629         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
15630
15631         Notice that in MacOS X calling conventions you can fit a lot more
15632         floating point values in registers, so I should update the PInvoke
15633         test to excercise the passing of floating point values on the
15634         stack (currently broken).
15635         
15636 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
15637
15638         * tramp-ppc.c (create_trampoline_code): Added
15639         JUMP_TRAMPOLINE_SIZE. 
15640         (ppc_magic_trampoline): Follow the pattern from
15641         x86_magic_trampoline: if code is set to zero, return. 
15642         (create_trampoline_code): Always pass MonoMethod to the jump
15643         trampoline, before it was passing a null.
15644         (mono_arch_create_jump_trampoline): Implement the jump stub, could
15645         share the code with mono_arch_create_jit_trampoline. 
15646
15647         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
15648         implemented.
15649         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
15650         implemented.  
15651
15652         * cpu-g4.md: Added length for jmp instruction, the worst case
15653         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
15654         for save_lmf).
15655
15656 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
15657
15658         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
15659
15660 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
15661
15662         * mini.c: Only set bblock->real_offset when adding a new bblock, and
15663         before each IL instruction.
15664
15665         * mini.c (CEE_BOX): Fix warnings.
15666
15667 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15668
15669         * mini.c: removed a few unused vars and extra whitespace.
15670
15671 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
15672
15673         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
15674         checks.
15675         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
15676         index.
15677         (OP_GETCHR): use the above
15678         (CEE_LDELEMA): use the above.
15679
15680         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
15681         version of the generic impl.
15682         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
15683         (CEE_LDELEMA): use the above.
15684
15685 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15686
15687         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
15688         Fixes #56317.
15689
15690         * iltests.il: Added new regression test for #56317.
15691
15692 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15693
15694         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
15695         under NetBSD. Fixes #56450.
15696
15697         * liveness.c (update_gen_kill_set): Fix previous patch.
15698
15699 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15700
15701         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
15702
15703 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
15704
15705         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
15706         ldsfld and ldsflda.
15707
15708         * inssel-sparc.brg: Add more optimizations.
15709
15710         * mini-sparc.c: Replace multiply/divide with shifts if possible.
15711
15712 2004-04-01  Martin Baulig  <martin@ximian.com>
15713
15714         * mini.c (handle_box): New static function; moved the
15715         implementation of CEE_BOX here.
15716         (mono_method_to_ir): Added `constrained_call' variable.
15717         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
15718         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
15719         mono_method_get_constrained() to get the method.
15720
15721 2004-04-01  Martin Baulig  <martin@ximian.com>
15722
15723         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
15724         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
15725         (mono_method_to_ir): We don't need these macros anymore since
15726         mono_class_get_full() already takes care of it. 
15727
15728 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15729
15730         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
15731         use @function (as doesn't accept #function here) and check the return
15732         value of system and stop if fails.
15733
15734 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15735
15736         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
15737
15738 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
15739
15740         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
15741
15742         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
15743
15744         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
15745         #56223.
15746
15747         * basic-long.cs: Add test for negation of Int64.MinValue.
15748
15749 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
15750
15751         * mini-sparc.c: Update status.
15752
15753         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
15754
15755         * exceptions-sparc.c: Fix return value in filters.
15756
15757         * inssel-sparc.brg: Fix register allocation in some rules.
15758
15759 2004-03-28  Martin Baulig  <martin@ximian.com>
15760
15761         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
15762         if neccessary.  
15763
15764 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
15765
15766         * mini-x86.c (mono_arch_patch_code): Fix warnings.
15767         
15768         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
15769         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
15770         remove unused conv_u4 opcode.
15771
15772         * mini-x86.c: Remove valgrind workaround since it slows down things
15773         even when mono is not run under valgrind.
15774
15775 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
15776
15777         * mini-sparc.c: Update status.
15778
15779         * inssel-sparc.brg: Add some optimizations.
15780
15781         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
15782         future delay slot filling. Add support for varargs, tail calls and JMP.
15783
15784         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
15785         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
15786
15787         * inssel.brg: Fix register allocation in OP_ARGLIST.
15788
15789         * inssel.brg: Fix warnings.
15790
15791 2004-03-25  Martin Baulig  <martin@ximian.com>
15792
15793         * mini.c (inflate_generic_field): Removed.
15794         (mini_get_method): Removed, use mono_get_method_full(),
15795         (mini_get_class): Removed, use mono_class_get_full().
15796         (mono_method_to_ir): Pass our generic context to
15797         mono_field_from_token().        
15798
15799 2004-03-25  Martin Baulig  <martin@ximian.com>
15800
15801         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
15802         of a `MonoMethod *'.
15803         (mini_get_method): Take a `MonoGenericContext *' instead
15804         of a `MonoMethod *'.
15805         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
15806         a new local variable called `generic_context' which holds the
15807         current `MonoGenericContext *'; use it to lookup things.
15808
15809 2004-03-24  Martin Baulig  <martin@ximian.com>
15810
15811         * mini.c (mini_get_class): New static method; if we're inside a
15812         generic instance, inflate the class if neccessary.
15813         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
15814
15815 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
15816
15817         * iltests.il: New regression test for #55976.
15818
15819         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
15820         #55976.
15821
15822 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15823
15824         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
15825         output.
15826
15827 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15828
15829         * liveness.c: Consider SSA stores as well as loads when making vars
15830         volatile.
15831
15832         * exceptions.cs: New regression tests for register allocation.
15833         
15834 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
15835
15836         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
15837         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
15838           domain lock only to protect puntual access to data structures.
15839           Added access lock for sighash, jit_icall_hash_name, 
15840           jit_icall_hash_addr and domain->code_mp.
15841
15842 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
15843
15844         * driver.c: Print SIGSEGV handling method.
15845
15846         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
15847
15848         * mini.c (setup_jit_tls_data): Handle case when this is called
15849         multiple times for a thread.
15850
15851         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
15852         is different from fbxx_un. Fixes #54303. Also use constants instead of
15853         magic numbers in a lot of places.
15854
15855 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
15856
15857         * exceptions.cs: Fix cctor test when --regression is used.
15858
15859 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
15860
15861         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
15862         for Linux/ppc.
15863
15864 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
15865
15866         * inssel-ppc.brg: fixed register assignments for some rules.
15867
15868 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15869
15870         * exceptions.cs: Add test for exceptions in static constructors.
15871
15872         * mini.c (mono_jit_compile_method_with_out): Move the calling of
15873         static constructors outside the domain lock. Fixes #55720.
15874
15875 2004-03-17  Martin Baulig  <martin@ximian.com>
15876
15877         * mini.c (get_generic_field_inst): Removed, this'll never happen.
15878         (inflate_generic_field): Take the `MonoMethod *' instead of the
15879         `MonoClass *' and added support for generic method.
15880         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
15881         have a `field->parent->gen_params', only inflate the field if it's
15882         an open constructed type.
15883
15884 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15885
15886         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
15887         exception object instead of the preconstructed ones.
15888
15889 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15890
15891         * mini.c: reverted changed to sigsegv_signal_handler commited
15892         accidentally in the previous patch.
15893
15894 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15895
15896         * mini.c:
15897         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
15898         running --aot with an old assembly.
15899
15900 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
15901
15902         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
15903         point values.
15904
15905         * mini-sparc.c: Add support for v9 branches with prediction.
15906
15907 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
15908
15909         * mini.c (mini_init): #warning is GNUC only
15910
15911         * mini-sparc.h: implement __builtin_frame_address
15912         and __builtin_return_address for Sun C compiler
15913
15914 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
15915
15916         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
15917
15918 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
15919
15920         * basic-calls.cs: Add test for unaligned byref long argument passing.
15921
15922         * mini-ops.h: Add sparcv9 compare and branch instructions.
15923
15924         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
15925         v9 instructions if we have a v9 cpu.
15926
15927         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
15928         registers for global allocation.
15929
15930         * exceptions-sparc.c: Fixes.
15931         
15932 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
15933
15934         * liveness.c (mono_analyze_liveness): Optimized version.
15935
15936         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
15937
15938         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
15939         sparc work.
15940
15941         * basic-float.cs basic-calls.cs: New regression tests.
15942
15943 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
15944
15945         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
15946         sigaltstack implementation.
15947
15948         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
15949         
15950         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
15951         stuff if SIGSEGV_ON_ALTSTACK is not defined.
15952
15953 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
15954
15955         * mini.c: Fix warnings.
15956         
15957         * mini.c (mono_resolve_patch_target): New function which contains the
15958         arch independent part of the patching process.
15959
15960         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
15961         patching code to a separate function.
15962
15963 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
15964
15965         * mini.c (add_signal_handler): ifdef out on Windows
15966
15967 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
15968
15969         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
15970         cpu-sparc.md: Add exception handling support + other fixes.
15971
15972         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
15973         typed GC detection in --version.
15974
15975         * basic.cs exceptions.cs: New regression tests.
15976
15977         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
15978         the arch specific code can store data during a compilation.
15979
15980         * mini-ops.h: Add OP_SETFRET.
15981
15982         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
15983         function, register a separate icall for each arity, so the icalls can
15984         get a wrapper.
15985         
15986         * mini.c (mono_print_tree): Print negative offsets in a more readable
15987         form.
15988         
15989         * mini.c: Make signal handling work on sparc.
15990         
15991         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
15992
15993         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
15994
15995         * jit-icalls.c: Emulate truncl by aintl on solaris.
15996
15997         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
15998
15999 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
16000
16001         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
16002
16003 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
16004
16005         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
16006         a MarshalByRef type, inline a method that performs the check, taking into
16007         account that the object can be a proxy. Also implemented tow new opcodes:
16008         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
16009         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
16010         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
16011
16012 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
16013
16014         * mini-ppc.c: if a relative branch displacement is too big
16015         but it points to and area reachable with an absolute branch, 
16016         avoid the thunks.
16017
16018 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
16019
16020         * mini.c: optimize small copies in cpblk.
16021
16022 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
16023
16024         * basic-calls.cs basic-float.cs: New regression tests.
16025
16026         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
16027         negative offsets from %fp. Implement localloc. Fix local register 
16028         allocation. Fix the case when the this argument needs to be saved to
16029         the stack. Implement some missing opcodes.
16030
16031 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
16032
16033         * mini.c (mini_method_compile): Reenable global regalloc in methods
16034         with exception handlers.
16035
16036         * linear-scan.c (mono_varlist_sort): Fix warning.
16037
16038         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
16039
16040         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
16041         regalloc costs.
16042
16043         * liveness.c: Make all variables uses in exception clauses volatile, to
16044         prevent them from being allocated to registers. Fixes #42136.
16045
16046 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
16047
16048         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
16049         causes regressions.
16050
16051         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
16052         argument to mono_arch_regalloc_cost.
16053
16054         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
16055         precisely.
16056
16057 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
16058
16059         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
16060         Make the cost of allocating a variable to a register arch dependent.
16061
16062         * basic-calls.cs: Fix compilation of tests.
16063         
16064         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
16065         helper function to cut back on the number of #ifdefs needed.
16066
16067         * mini-ppc.c: Fix compilation.
16068
16069         * basic-calls.cs: New regression tests.
16070
16071         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
16072
16073         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
16074         of l0 since that is callee saved.
16075
16076         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
16077         to virtual calls.
16078
16079         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
16080         of delay instruction.
16081
16082         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
16083
16084         * mini.h (MonoCallInst): Add 'virtual' flag.
16085
16086         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
16087
16088 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
16089
16090         * *.cs: New regression tests.
16091
16092         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
16093         work.
16094
16095         * mini.c (mono_runtime_install_handlers): Fix build.
16096
16097         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
16098         'signal_stack_size' members.
16099
16100         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
16101         alternate signal stack.
16102
16103         * exceptions-x86.c: Add stack overflow handling.
16104
16105         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
16106         functions to arch independent code.
16107
16108         * mini.c (mono_print_tree): Print more detailed info for load_membase
16109         opcodes.
16110         
16111 2004-02-23  Martin Baulig  <martin@ximian.com>
16112
16113         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
16114
16115 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
16116
16117         * mini-x86.c: fixed reg allocation for div/rem.
16118
16119 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
16120
16121         * driver.c (mono_main): Report some configuratio options on --version.
16122
16123 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
16124
16125         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
16126         low in the address space. Correctly flush memory in thunks where we
16127         output native code.
16128
16129 2004-02-20  Martin Baulig  <martin@ximian.com>
16130
16131         * mini.c (mini_get_method): New static method; inflate all generic
16132         methods and methods in open generic instances.
16133         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
16134         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
16135
16136 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
16137
16138         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
16139
16140         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
16141
16142 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
16143
16144         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
16145
16146         * mini-sparc.c (flushi mono_arch_output_basic_block): make
16147         it compile using Sun's compiler.
16148
16149 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
16150
16151         * 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.
16152
16153         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
16154
16155 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16156
16157         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
16158         code.
16159         * mini-ppc.c: handle calls outside of the allowed range with thunks
16160         allocated using the code manager.
16161         * tramp-ppc.c: use the code manager to hold generated native code.
16162         Fixed the magic trampoline to just patch vtable entries.
16163
16164 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
16165
16166         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
16167         independent file.
16168
16169 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
16170
16171         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
16172         PPC.
16173
16174         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
16175         if we have a working __thread implementation.
16176
16177         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
16178         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
16179
16180 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
16181
16182         * mini-x86.c: Fix compilation under gcc 2.
16183         
16184 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
16185
16186         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
16187         contains a call to the wrapped function.
16188
16189         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
16190         OP_<CALL>_IMM opcodes, and use them under X86.
16191         
16192         * mini.c (mono_jit_find_compiled_method): Fix warning.
16193
16194         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
16195
16196         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
16197
16198         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
16199         functionality to mini.c.
16200
16201         * mini.c (mono_create_jump_trampoline): New function to create a jump
16202         trampoline. Return a compiled method instead of a trampoline if it
16203         exists. Add a cache for jump trampolines.
16204
16205         * mini.c (mono_jit_find_compiled_method): New function to return a
16206         compiled method if it exists.
16207
16208         * mini-x86.c: Call mono_create_jump_trampoline instead of 
16209         mono_arch_create_jit_trampoline.
16210
16211         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
16212         a jump trampoline. Fixes #52092.
16213         
16214 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
16215
16216         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
16217         which is not up-to-date. Add check_corlib_version () instead.
16218
16219         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
16220         have to call it.
16221         
16222         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
16223         since newer valgrind versions do not need it.
16224
16225         * mini.c (mono_jit_compile_method_with_opt): New helper function to
16226         compile a method with a given set of optimizations.
16227
16228         * mini.c: Compile icall wrappers on-demand instead of at startup.
16229
16230         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
16231         wrapper for an icall.
16232
16233 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
16234
16235         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
16236         #54063.
16237
16238         * iltests.il: Add test for non-empty stack before switch instruction.
16239
16240 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
16241
16242         * mini.c: Add support for new stringbuilder marshalling conventions.
16243
16244         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
16245
16246 2004-02-01  Martin Baulig  <martin@ximian.com>
16247
16248         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
16249         in `ginst->mtype_argv'.
16250
16251 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
16252
16253         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
16254         facilitate grepping.
16255
16256 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
16257
16258         * mini.c: fixed buglet in initobj generic implementation for references.
16259
16260 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
16261
16262         * Makefile.am: make the version script conditional.
16263         * jit-icalls.c: handle missing truncl().
16264
16265 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
16266
16267         * exceptions.cs: Add more tests for double->int conversion.
16268
16269         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
16270         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
16271
16272 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
16273
16274         * driver.c: make --verbose --version emit an error
16275         if the loaded corlib doesn't match the runtime version.
16276
16277 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
16278
16279         * mini-ppc.h: export ppc_patch().
16280         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
16281         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
16282         on par or better than on MacOSX.
16283
16284 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
16285
16286         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
16287         mono_lookup_pinvoke_call.
16288
16289         * mini-x86.c: Under windows, the default pinvoke calling convention is
16290         stdcall. Fixes #52834.
16291
16292         * mini.c (optimize_branches): Add an upper bound to the number of
16293         iterations to prevent infinite loops on strange loops. Fixes #53003.
16294
16295 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
16296
16297         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
16298         and ISINST. Fixes #52093.
16299
16300         * objects.cs (test_0_vector_array_cast): New tests.
16301         
16302 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
16303
16304         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
16305         checking in Array.Set ().
16306
16307         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
16308         #52590.
16309
16310         * object.cs (test_0_multi_array_cast): New regression test.
16311
16312 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
16313
16314         * exceptions-ppc.c: fix build on Linux/PPC.
16315
16316 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
16317
16318         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
16319         running under valgrind.
16320         (x86_magic_trampoline): Fix build bustage.
16321
16322         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
16323         negative values as well. This is needed for the encoding of the line number
16324         info, since sometimes the line numbers are not in increasing order.
16325
16326 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
16327
16328         * cpu-pentium.md (localloc): Increase the size of the localloc 
16329         instruction since it is a loop under Win32.
16330
16331         * debug-mini.c (record_line_number): Get rid of unneccesary memory
16332         allocation.
16333
16334 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
16335
16336         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
16337         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
16338         Max Horn (max@quendi.de). Fix file names in comments.
16339
16340 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
16341
16342         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
16343         avoid stack overflow.
16344         (replace_usage): Avoid uninitialized variable warnings.
16345
16346         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
16347         and taking the address of valuetype variables.
16348
16349 2004-01-03  Patrik Torstensson
16350
16351         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
16352         for other purposes than FP later on.
16353
16354 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
16355
16356         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
16357         of tail calls.
16358
16359 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16360
16361         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
16362
16363 2003-12-30  Patrik Torstensson <p@rxc.se>
16364
16365         * mini-x86.h: Decreased number of availiable fp regs.
16366         Solves corner cases with FP spilling.
16367
16368 2003-12-23  Patrik Torstensson <p@rxc.se>
16369
16370         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
16371         for floating point stack tracking / spilling on x86. 
16372         Fixes bug #49012.
16373         
16374         * basic-float.cs: added float mul overflow test.
16375
16376 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
16377
16378         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
16379
16380 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16381
16382         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
16383         supports for cond branches that overflow the immediate
16384         overflow offset. mcs can compile simple programs.
16385
16386 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16387
16388         * exceptions-ppc.c: exception handling support wip:
16389         finally handlers get run on exception.
16390
16391 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
16392
16393         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
16394         profiling.
16395
16396 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16397
16398         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
16399         initial support for stack walking and unwinding.
16400
16401 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
16402
16403         * driver.c (mono_main): Make corlib-out-of-sync message more 
16404         descriptive. Also remove verify_corlib call.
16405
16406 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16407
16408         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
16409         not overlap with other call's arguments, too.
16410
16411 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
16412
16413         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
16414         move to arch-specific code the choice of arch-specific
16415         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
16416         * mini.c: ensure emulation calls will not interleave
16417         with other calls.
16418
16419 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
16420
16421         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
16422         the magic trampoline stack frame is dropped before executing
16423         the new method.
16424
16425 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
16426
16427         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
16428         and integer to fp conversions. Added support for overflowing
16429         arguments on the stack. Reserve a couple more registers as temps.
16430         Added support for aot compilation (as output still needs to be
16431         tweaked, though).
16432
16433 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16434
16435         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
16436         Don't overwrite return register in some corner cases.
16437
16438 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
16439
16440         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
16441         static constructors when AOT compiling.
16442
16443         * driver.c (mono_main): Call mono_check_corlib_version.
16444
16445 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16446
16447         * cpu-g4.md, basic.cs: fixed div target register.
16448
16449 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
16450
16451         * mini-ppc.c, basic.cs: shl_imm fix with test.
16452
16453 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16454
16455         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
16456         structures by value. Misc fixes.
16457         * objects.cs: more tests.
16458
16459 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
16460
16461         * mini-ppc.c: lconv.ovf.i implemented.
16462
16463 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16464
16465         * mini.c:
16466         (mini_init): don't error out if someone already called g_thread_init.
16467
16468 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16469
16470         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
16471         to be any type per the spec. Fix abnormal memory usage when
16472         the same object is repeatedly thrown.
16473
16474 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
16475
16476         * mini.c: check for overruns in IL code.
16477
16478 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
16479
16480         * TODO: Add/remove some todo entries.
16481
16482 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
16483
16484         * driver.c (mono_main): Call mono_verify_corlib.
16485
16486 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
16487
16488         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
16489         This has been moved to mini.c
16490         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
16491         type being casted is marshalbyref it could be a proxy, so instead of
16492         emitting the type check code, emit a call to a runtime method that will
16493         perform the check by calling CanCastTo if needed.
16494
16495 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
16496
16497         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
16498         methods with large stack frames under Win32.
16499
16500 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
16501
16502         * Makefile.am: Distribute regression tests.
16503
16504         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
16505         at the end instead of inserting each variable into the sorted list.
16506
16507         * linear-scan.c (mono_varlist_sort): New helper function.
16508         
16509 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16510
16511         * mini.c: ensure arguments and locals are within bounds.
16512
16513 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16514
16515         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
16516         related fixes.
16517
16518 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16519
16520         * mini.c (mono_cprop_copy_values): Fix crash.
16521
16522         * aot.c: Set verbosity back to 0.
16523         
16524 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16525
16526         * regalloc.c: complete memory leak fix by Laurent Morichetti
16527         (l_m@pacbell.net).
16528
16529 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16530
16531         * driver.c (main_thread_handler): Revert the previous patch.
16532
16533         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
16534         under valgrind.
16535
16536         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
16537         memory from the memory pool.
16538
16539         * driver.c (main_thread_handler): Turn on all optimizations when
16540         --aot is used.
16541
16542         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
16543         an array for better performance.
16544
16545         * regalloc.c (mono_regstate_assign): Fix memory leak.
16546
16547         * debug-mini.c (mono_debug_serialize_debug_info): New function to
16548         serialize the debug info.
16549
16550         * debug-mini.c (mono_debug_add_aot_method): New function to load the
16551         debug info from the serialized representation.
16552
16553         * aot.c: Save debug info into the generated file and load it when 
16554         loading a method.
16555
16556         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
16557
16558 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16559
16560         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
16561         More FP-related fixes.
16562
16563 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
16564
16565         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
16566         and register allocation buglet. Hello world now runs.
16567
16568 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16569
16570         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
16571         * tramp-ppc.c: fixed class init trampoline.
16572         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
16573
16574 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16575
16576         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
16577         mini.c: more ppc changes/fixes.
16578
16579 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16580
16581         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
16582         Also optimize the case when the arguments are the same in the caller 
16583         and in the callee.
16584
16585         * iltests.il: Add tests for tail calls with valuetype arguments.
16586
16587 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16588
16589         * mini-ppc.c: fixes for struct return type.
16590
16591 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
16592
16593         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
16594         mono_spillvar_offset() to arch-specific code.
16595
16596 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
16597
16598         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
16599
16600 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16601
16602         * exceptions-x86.c: Fix stack space leaks.
16603         
16604         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
16605         registers from the lmf if the method has save_lmf set.
16606
16607 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
16608
16609         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
16610         of icall wrappers into InvokeInDomain, since these are now per-domain.
16611
16612 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
16613
16614         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
16615         make some opcode emulation and intrinsic ops enabled/disabled 
16616         according to the architecture. More fixes.
16617
16618 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
16619
16620         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
16621
16622 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16623
16624         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
16625         arch-specific handling for 'this' and struct return type to
16626         arch-specific code.
16627
16628 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16629
16630         * aot.c: prevent divide by zero error when reporting (it happened with
16631         Accessibility.dll).
16632
16633 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
16634
16635         * mini.h (inst_switch): Remove unused macro.
16636
16637 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16638
16639         * aot.c:
16640         (load_aot_module): free 'info->methods' and 'info' properly. No more
16641         "free(): invalid pointer blah" messages when you have an old aot
16642         compiled assembly.
16643
16644 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
16645
16646         * jit-icalls.c, mini.c: Added support for context static fields.
16647
16648 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16649
16650         * mini.c (mono_method_blittable): Methods which set LastError are not 
16651         blittable either. Fixes #51108.
16652         
16653 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16654
16655         * mini.c: flush icache.
16656         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
16657
16658 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16659
16660         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
16661
16662 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
16663
16664         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
16665         safe on IA32.
16666
16667         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
16668         vararg calls.
16669
16670         * inssel.brg (CEE_MKREFANY): Fix AOT case.
16671
16672 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
16673
16674         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
16675         instruction when the result is discarded.
16676
16677         * iltests.il (test_0_div_regalloc): New regression test.
16678
16679         * arrays.cs: Fix compilation error.
16680
16681 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
16682
16683         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
16684         float rules to inssel-x86.brg: sane architectures with FP registers
16685         don't need to implement these rules.
16686
16687 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16688
16689         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
16690
16691 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16692
16693         * mini.h, inssel-long32.brg: fixed endianess issues in int64
16694         implementation of 32 bit systems.
16695
16696 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16697
16698         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
16699         (Jeroen Zwartepoorte).
16700
16701 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
16702
16703         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
16704         the caller and the callee matches.
16705         
16706         * mini.c (mono_method_to_ir): Add comment.
16707
16708         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
16709         signbit is missing on some platforms.
16710
16711 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
16712
16713         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
16714
16715         * mini.c (setup_jit_tls_data): Call the new function.
16716         
16717         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
16718
16719         * mini-x86.c: Add experimental support for fast access to the lmf
16720         structure under NPTL/Linux 2.6.x.
16721
16722 2003-11-06  Martin Baulig  <martin@ximian.com>
16723
16724         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
16725         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
16726         the debugger.
16727
16728 2003-11-02  Martin Baulig  <martin@ximian.com>
16729
16730         * mini.c (inflate_generic_field): New static method.
16731         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
16732         generic instance and the field is declared in a generic type, call
16733         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
16734
16735 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
16736
16737         * mini.h mini.c (mono_method_same_domain): New function to return
16738         whenever the caller and the callee are in the same domain.
16739
16740         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
16741
16742 2003-10-30  Martin Baulig  <martin@ximian.com>
16743
16744         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
16745         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
16746         method parameters.
16747         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
16748         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
16749
16750 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
16751
16752         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
16753         propagation.
16754
16755         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
16756         object here, so it is in the correct appdomain etc.
16757
16758 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
16759
16760         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
16761         already done.
16762         (mono_method_to_ir): Avoid freeing the type created returned from
16763         mono_type_create_from_typespec, since it is put into an internal cache
16764         by the function. Fixes pointer.exe.
16765
16766         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
16767         trampolines for icalls and pinvokes as well. Fixes #33569.
16768
16769 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
16770
16771         * mini.c: Update after appdomain changes.
16772
16773         * mini.c (mono_jit_compile_method_inner): Allways compile native
16774         method wrappers in the root domain, since there can only be one
16775         instance of them, whose address is stored in method->info.
16776
16777 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
16778
16779         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
16780         environment variable. Instead detect automatically whenever running
16781         under valgrind using the magic macro RUNNING_ON_VALGRIND from
16782         valgrind.h.
16783
16784 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
16785
16786         * trace.c, trace.h: New files that implement the new trace option
16787         parsing. 
16788
16789         * driver.c: Document new --trace options.
16790
16791         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
16792         mini-x86.c: Apply:
16793
16794         -       if (mono_jit_trace_calls)
16795         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
16796
16797         * mini.h: prototypes.
16798         
16799 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
16800
16801         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
16802
16803         * mini.c inssel.brg: Implement typedefbyref opcodes.
16804
16805         * mini.c (mono_jit_compile_method): Remove unused local variable.
16806
16807         * mini.c (mono_jit_compile_method_inner): Ditto.
16808         
16809 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
16810
16811         * tramp-x86.c (x86_class_init_trampoline): Fix build.
16812         
16813         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
16814
16815 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
16816
16817         * mini.c (mono_no_aot): Remove unused global variable.
16818
16819         * mini.c: Thread safety fixes.
16820
16821 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
16822
16823         * mini.c (mono_create_class_init_trampoline): Add a lock around
16824         class_init_hash_addr.
16825
16826         * arrays.cs (test_0_newarr_emulation): Add new regression test for
16827         #30073.
16828
16829         * mini.c: Decompose the NEWARR instruction before decomposing its
16830         arguments. Fixes #30073.
16831
16832 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
16833
16834         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
16835         convention.
16836
16837 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
16838
16839         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
16840
16841         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
16842
16843         * driver.c: Add support for compiling icall wrappers to --compile.
16844
16845 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
16846
16847         * inssel.brg: The empty value in class->interface_offsets is -1, not
16848         0. Fixes #49287.
16849
16850 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
16851
16852         * objects.cs: New test for 'is' operator on an array of interfaces.
16853
16854 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
16855
16856         * tramp-ppc.c: update trampoline code to support jumps
16857         and class initialization.
16858
16859 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
16860
16861         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
16862
16863         * inssel.brg (OP_UNBOXCAST): Fix #46027.
16864
16865         * inssel.brg (OP_UNBOX): Remove unused rule.
16866
16867         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
16868         region instead of one for each method. Fixes #47813.
16869
16870 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
16871
16872         * exceptions.cs (test_0_nested_finally): New regression test for
16873         nested exception handlers.
16874
16875         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
16876
16877         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
16878
16879         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
16880         inlining.
16881
16882         * mini.c (mono_method_check_inlining): Make the inlining limit 
16883         configurable by an environment variable.
16884         
16885         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
16886
16887         * mini.h: Bump AOT file version.
16888
16889         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
16890         token, store the image along with the token, since the token might not 
16891         refer to the same image as the method containing the relocation, 
16892         because of inlining.
16893
16894 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
16895
16896         * mini.c (mono_precompile_assemblies): New function to compile
16897         all methods in all loaded assemblies.
16898
16899         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
16900
16901         * regalloc.h regalloc.c (MonoRegState): Change the type of 
16902         iassign and fassign to int*, since they can contain large negative
16903         values if the register is spilled. Also added some comments. Fixes
16904         #45817.
16905
16906         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
16907         under Win32. Fixes #42964.
16908
16909 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
16910
16911         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
16912
16913         * aot.c: Added support for AOT compiling methods which contain calls
16914         to wrappers. Currently, only remoting-invoke-with-check wrappers are
16915         handled.
16916         
16917         * driver.c (compile_all_methods): Run the compilation in a thread
16918         managed by mono. Fixes #44023.
16919
16920         * mini.c (mono_codegen): Print full method name in verbose output.
16921
16922         * mini-x86.c (mono_arch_patch_code): Fix warning.
16923         
16924         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
16925         jumps, since the method we are jumping to might be domain-specific.
16926
16927         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
16928
16929 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
16930
16931         * inssel.brg: string chars are unsigned.
16932
16933 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
16934
16935         * TODO: New todo item.
16936
16937         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
16938         which calls mono_runtime_class_init and patches the call site to
16939         avoid further calls.
16940         (mono_arch_create_class_init_trampoline): New arch specific function 
16941         to create a class init trampoline.
16942         (create_trampoline_code): Generalized so it can create
16943         class init trampolines as well.
16944
16945         * mini.c (helper_sig_class_init_trampoline): New helper variable.
16946         (mono_create_class_init_trampoline): New function to create and cache
16947         class init trampolines.
16948         (mono_find_class_init_trampoline_by_addr): New function to lookup the
16949         vtable given the address of a class init trampoline. Used by the
16950         patching process.
16951         (mono_codegen): Generate a call to a trampoline instead of
16952         mono_runtime_class_init in LDSFLD[A].
16953         (mono_codegen): Add relocations for the new trampoline.
16954         
16955         * mini.h mini-x86.c aot.c: Added a new relocation type: 
16956         MONO_PATCH_INFO_CLASS_INIT.
16957
16958         * mini.h: Bump AOT version number.
16959
16960         * aot.c: Create a copy of the loaded code instead of using the original
16961         so methods which call each other will be close in memory, improving
16962         cache behaviour.
16963         
16964         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
16965         patch since it breaks the regression tests.
16966         
16967         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
16968         for the register saving instruction sequence since the 
16969         frame_state_for function in glibc 2.3.2 don't seem to detect it.
16970
16971 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
16972
16973         * TODO: Fix todo item && remove another.
16974
16975 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
16976
16977         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
16978         previous checkin.
16979
16980         * aot.c: Moved the check for MONO_LASTAOT into the initialization
16981         function of the module.
16982
16983         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
16984         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
16985         --no-aot command line option.
16986
16987 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
16988
16989         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
16990         by Bernie Solomon (bernard@ugsolutions.com).
16991
16992         * inssel.brg: Refactor the interface offset table related code into
16993         its separate functions and add support for the AOT case.
16994
16995 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
16996
16997         * aot.c (mono_aot_get_method_inner): Fix memory leak.
16998         
16999         * aot.c: Added mono_aot_verbose variable and made all debugging
17000         output depend on the value of this variable.
17001
17002         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
17003         method_label and info_label.
17004
17005         * mini.h mini-x86.c aot.c: Added a new relocation type 
17006         MONO_PATCH_INFO_IID for klass->interface_id.
17007
17008         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
17009         the MonoJitInfo structure.
17010
17011         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
17012         a non-root appdomain in shared mode.
17013
17014 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17015
17016         * aot.c: make aot loader less verbose. Remove free of unused variable.
17017
17018 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
17019
17020         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
17021
17022         * .cvsignore: Added *.dll.
17023
17024         * mini.c (mono_print_tree_nl): New function callable while debugging.
17025
17026         * mini.c (mono_print_code): Export this.
17027
17028         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
17029         patched code.
17030
17031 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
17032
17033         * mini.h (MonoCompile): Added 'jit_info' field.
17034
17035         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
17036         the cfg structure, since it is needed by the AOT compiler.
17037
17038         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
17039
17040         * aot.c: A major rewrite. Changes include:
17041         - save exception tables for methods which have them.
17042         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
17043         to g_module_symbol.
17044         - reworked the file format so it is now much smaller and needs
17045         fewer relocation entries.
17046         
17047 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
17048
17049         * aot.c (load_aot_module): Fix build bustage on platforms without
17050         Boehm GC.
17051
17052 2003-09-04  Martin Baulig  <martin@ximian.com>
17053
17054         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
17055
17056 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
17057
17058         * TODO: Some new optimization ideas.
17059
17060         * aot.c: Move AOT module loading logic here from mono_assembly_open.
17061
17062         * aot.c: Save the optimization flags used to compile the code into
17063         the AOT module.
17064
17065         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
17066         support emitting domain specific code.
17067         
17068         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
17069         no longer domain neutral. It can be made domain neutral by compiling 
17070         with --optimize=shared.
17071
17072         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
17073         between appdomains.
17074
17075         * driver.c mini.h mini.c: New --no-aot debugging option which disables
17076         loading of AOT code.
17077
17078         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
17079         
17080         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
17081         if there is no domain neutrality information.
17082
17083 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
17084
17085         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
17086         format version into the generated library.
17087
17088         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
17089         callee method into the caller since one of them could be shared.
17090
17091         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
17092         system exceptions from AOT code now works.
17093
17094         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
17095         method if it is domain neutral and the callee is not.
17096
17097         * graph.c (cfg_emit_one_loop_level): Fix warning.
17098
17099 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
17100
17101         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
17102         last checkin.
17103
17104 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
17105
17106         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
17107         is needed  by code which is executed before mono_runtime_init ().
17108         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
17109         
17110         * mini.c (mono_thread_abort): Fix warning.
17111         (mono_jit_compile_method): Call static constructor in the AOT case too.
17112
17113         * aot.c (mono_compile_assembly): Fix warning.
17114
17115 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17116
17117         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
17118
17119 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
17120
17121         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
17122
17123         * cpu-pentium.md: Fix the length of call opcodes so they include the
17124         ESP restoring instruction. Fixes #47968.
17125
17126 2003-08-28  Martin Baulig  <martin@ximian.com>
17127
17128         * mini-x86.c (mono_arch_call_opcode): Added support for
17129         MONO_TYPE_GENERICINST.
17130
17131         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
17132
17133 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
17134
17135         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
17136         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
17137
17138         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
17139         metadata_section.
17140
17141 2003-08-26  Martin Baulig  <martin@ximian.com>
17142
17143         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
17144         when reporting an error, set this to the actual error location.
17145         (mono_method_to_ir): Report the correct error location if
17146         get_basic_blocks() returned an error.
17147
17148 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
17149
17150         * mini.c (mono_type_blittable): OBJECT is not blittable.
17151         (mono_method_blittable): Methods which have marshalling descriptors
17152         are not blittable either. Fixes #47842.
17153
17154 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
17155
17156         * driver.c mini.c: Use an environment variable instead of a global 
17157         variable. Also fix the build.
17158
17159         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
17160         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
17161         reporting this. 
17162
17163         * driver.c mini.c: Added --with-valgrind option to turn off some
17164         code which prevents mono from running under valgrind.
17165
17166         * mini.c (mono_emit_call_args): Fixed warning.
17167
17168         * mini.c (mono_emulate_opcode): Fixed warning.
17169
17170 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17171
17172         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
17173         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
17174         regalloc.c, regalloc.h: specify available registers in arch-specific
17175         code and support floats in the regallocator (patch by Laurent Morichetti 
17176         <l_m@pacbell.net>)
17177
17178 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17179
17180         * mini.c: mono_thread_current() can be called only after
17181         mono_runtime_init(): rearrange code to not call it early on.
17182
17183 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17184
17185         * mini.c: allocate jump tables in the code mempools.
17186
17187 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17188
17189         * mini.c, mini.h: make sure per-thread data allocated by the jit is
17190         freed.
17191
17192 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
17193
17194         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
17195         12 to 16.  This fixes bug #47453.
17196
17197
17198 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
17199
17200         * mini-ppc.c: fixed indexed load and unsigned compares.
17201
17202 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
17203
17204         * mini.c: reenabled installation of handler for
17205           thread abort signal.
17206
17207 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17208
17209         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
17210         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
17211         until it's fixed and actually useful.
17212
17213 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17214
17215         * inssel-long32.brg: couple more opcodes implemented.
17216
17217 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
17218         
17219         * mini-sparc.c: Even more opcodes implemeted.
17220
17221 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
17222
17223         * mini-sparc.c: More opcodes implemented.
17224
17225 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
17226
17227         * mini-sparc.c: More opcodes implemented.
17228
17229 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
17230
17231         * inssel-sparc.brg: Add some needed rules.  Direct
17232         copy from PPC.
17233         * Makefile.am: Use inssel-sparc.brg
17234         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
17235         an assert happy for now.
17236
17237 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
17238
17239         * mini-sparc.c: Fixed compile errors.
17240         * exceptions-sparc.c: Same.  We now produce a mono binary 
17241         on sparc-linux.  Yea.
17242
17243 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
17244
17245         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
17246         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
17247         They compile, but do not work.
17248
17249 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17250
17251         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
17252         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
17253         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
17254         (ct@gentoo.org).
17255
17256 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17257
17258         * mini.c: more opcodes implemented and better support for generics.
17259
17260 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17261
17262         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
17263         * mini.c, mini.h: first cut at generics support: some new instructions 
17264         added and changed the behaviour of some of the existing ones.
17265
17266 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
17267
17268         * mini.c: Removed definition of metadata_shared mutex here.
17269
17270 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17271
17272         * mini-x86.c: make vararg calls work for instance methods.
17273
17274 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
17275
17276         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
17277         returns the arguments in a separte list, now.
17278
17279 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17280
17281         * aot.c, mini.c: updates for array type representation changes.
17282
17283 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
17284
17285         * mini.c: register function to perform jit shutdown.
17286
17287 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17288
17289         * mini.c: use a faster allocator if possible.
17290
17291 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17292
17293         * aot.c: some cleanups and portability changes.
17294
17295 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17296
17297         * mini.c: use faster allocation for CEE_BOX if possible.
17298
17299 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17300
17301         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
17302         Moved inlined mempcy code to its own function so that is can be
17303         reused. Added an inline memset function as well (optimized initobj).
17304         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
17305
17306 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17307
17308         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
17309
17310 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
17311
17312         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
17313         arch code can setup the cpu for CLR execution, if needed.
17314         We use it on x86 to set the precision of FP operations.
17315
17316 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
17317
17318         * mini.c: disable some optimizations if we can guess they'll cost too
17319         much for a given method.
17320
17321 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17322
17323         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
17324         
17325 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17326         * mini.h mini.c mini-x86.c: Added instruction level coverage 
17327         info collection support.
17328
17329 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17330
17331         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
17332         is now implemented in the profiling API. Get rid of a couple of
17333         unnecessary global variables.
17334
17335 2003-06-15  Nick Drochak <ndrochak@gol.com>
17336
17337         * basic-long.cs: tests for negative values for bigmul, and unsigned.
17338         * cpu-g4.md: add op_bigmul and op_bigmul_un
17339         * cpu_pentium.md: add op_bigmul_un
17340         * inssel-long32.brg: add rule for unsigned bigmul
17341         * mini-ops.h: define OP_BIGMUL_UN
17342         * mini-x86.c: THE BUG: handle (un)signed properly
17343         * mini.c: choose unsigned opcode if needed.
17344         This set of patches fixes bug #44291
17345
17346 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
17347
17348         * mini.c (optimize_branches): improved to handle all kinds of
17349         conditional branches.
17350
17351 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17352
17353         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
17354         don't raise exceptions.
17355
17356 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17357
17358         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
17359         to arch-specific files.
17360
17361 2003-06-09  Martin Baulig  <martin@ximian.com>
17362
17363         * Makefile.am (libs): Added $(LIBGC_LIBS).
17364
17365 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
17366
17367         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
17368         and OP_ATAN (fixes bug#44293).
17369
17370 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
17371
17372         * Makefile.am, mini-x86.c: rename cpu description array to
17373         pentium_desc, since some compilers define the 'pentium' preprocessor
17374         symbol.
17375
17376 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
17377
17378         * mini.c (mini_select_instructions): add explicit branch if the
17379         following block is not the false target of a conditional branch -
17380         we need this with any optimization that reorder or remove bblocks
17381
17382         * mini.c (optimize_branches): bug fixes
17383
17384 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
17385
17386         * mini.c (mono_method_to_ir): inline static readonly fields
17387
17388         * ssa.c (fold_tree): start cfold support for long (very simple
17389         cases only)
17390
17391         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
17392
17393 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17394
17395         * inssel.brg: fixed memcpy (bug #44219).
17396
17397 2003-06-05  Dick Porter  <dick@ximian.com>
17398
17399         * driver.c: Set the glib log levels to not abort if g_message
17400         recurses.
17401
17402         g_set_prgname() has to happen before mini_init() so that the
17403         process handle gets the info.
17404         
17405 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17406
17407         * driver.c: add intrins to the default optimizations to get wider
17408         exposure.
17409
17410 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17411
17412         * mini.h: some large basic blocks will overflow a 16-bit
17413         integers for symbolic registers.
17414
17415 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17416
17417         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
17418         (mono_arch_output_basic_block): fix bug 43499 
17419
17420 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17421
17422         * mini.c: kill duplicated definition of mono_debug_format.
17423
17424 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
17425
17426         * mini-x86.c, arrays.cs: fixed register allocation bug.
17427
17428 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17429
17430         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
17431
17432         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
17433
17434 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17435
17436         * mini.c:
17437         (print_method_from_ip): also print source location information if
17438         available.
17439
17440 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
17441
17442         * mini.c (mono_find_block_region): bug fix in region code
17443         (mini_method_compile): enable removing unreachable code again, but
17444         only in methods without exception clauses.
17445
17446 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17447
17448         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
17449         Implemented arglist opcode and handling of TypedReference type.
17450         Fixed x86 call convention when a structure is returned.
17451         Minimal support for calling static vararg methods.
17452
17453 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
17454
17455         * mini.c (mini_method_compile):  always remove unreachable code,
17456         because the code in them may be inconsistent  (access to dead
17457         variables for example).
17458
17459 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17460
17461         * driver.c, debug-mini.c: warning fixes.
17462
17463 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
17464
17465         * Makefile.am, jit.h, mini.h: install header for embedding mono.
17466
17467 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
17468
17469         * mini.c: thread-static fields are registered in mono_class_vtable(),
17470         so ensure the function is called before checking for them.
17471
17472 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
17473
17474         * mini.c (optimize_branches): fix for bug 43586
17475
17476         * jit-icalls.c (mono_llmult_ovf): added an additional check for
17477         overflow (fixes Bug #43639)
17478
17479 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17480
17481         * mini.c, objects.cs: allow the use of stobj for primitive types.
17482
17483 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17484
17485         * mini.c: be less strict about argument checking until we support
17486         running the verifier.
17487
17488 2003-05-27  Nick Drochak <ndrochak@gol.com>
17489
17490         * basic-long.cs: tests for (ulong)int * (ulong)int also
17491         * mini.c: use the same trick for (ulong)int * (ulong)int
17492
17493 2003-05-27  Nick Drochak <ndrochak@gol.com>
17494
17495         * basic-long.cs: add regression test for (long)int * (long)int
17496         * cpu-pentium.md: add op_bigmul specification
17497         * inssel-long32.brg: add OP_BIGMUL rule
17498         * mini-ops.h: add OP_BIGMUL
17499         * mini-x86.c: register allocator: handle case where src1 needs to be
17500         in EAX.
17501         * mini.c: substitute special BIGMUL opcode in the tree for 
17502         (long)int * (long)int
17503
17504 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
17505
17506         * jit-icalls.c: call the type ctor on field access if needed.
17507
17508 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17509
17510         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
17511         to a method (including results of ldelema, bug#43207).
17512
17513 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
17514
17515         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
17516         colors to show exception handler blocks.
17517
17518         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
17519         (fix for pinvoke7.cs).
17520
17521 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17522
17523         * mini.h, mini.c: ensure correct initialization order for types that
17524         require it. Prepare for lazy compilation of jit icall wrappers.
17525         Provide a name for opcode emulation to reduce unneeded mallocing.
17526
17527 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
17528
17529         * mini-x86.c: better register restoring code and profiling
17530         support for tail calls.
17531
17532 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17533
17534         * mini.h, driver.c: prepare for leaf methods optimization.
17535
17536 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17537
17538         * mini.c: get targets of branches before converting a method.
17539
17540 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
17541
17542         * mini.c (optimize_branches): added some experimental code (disbaled) 
17543
17544 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
17545
17546         * mini.c (optimize_branches): fix branch to branch optimization 
17547
17548         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
17549
17550         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
17551
17552         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
17553
17554         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
17555         if needed.
17556
17557 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
17558
17559         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
17560         enable use of interface variables again.
17561
17562         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
17563         I1 to registers because there is no simply way to sign extend 8bit
17564         quantities in caller saved registers on x86.
17565
17566         * inssel-float.brg: set costs of some rules to 2 so
17567         that monobure always select the arch. specific ones if supplied,
17568         regardless of the order we pass the files to monoburg.
17569
17570 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17571
17572         * mini.c, mini-x86.c: since the magic trampoline for jumps
17573         can't patch the code directly, we do it as soon as the
17574         method gets compiled.
17575
17576 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17577
17578         * mini-x86.c, mini.h: introduce a new patching method
17579         to support CEE_JMP and tail calls.
17580         * mini.c: obey tail.call. Don't precompile methods target
17581         of CEE_JMP.
17582         * tramp-x86.c: new trampoline code to handle methods
17583         reached through a jump.
17584
17585 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
17586
17587         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
17588         bit values to registers
17589
17590 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
17591
17592         * mini.c (mono_compile_get_interface_var): share interface
17593         variables if possible.
17594
17595 2003-05-16  Martin Baulig  <martin@ximian.com>
17596
17597         * debug-mini.c (mono_init_debugger): New function to initialize
17598         the debugger.  This is not in the debugger since it needs to
17599         access some of mini's internals.
17600
17601 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17602
17603         * mini.c (mono_method_to_ir): inlining fixes/cleanups
17604
17605 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
17606
17607         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
17608         for value type handling.
17609
17610 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17611
17612         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
17613         (mono_method_check_inlining): enable inlining of all kinds of wrappers
17614
17615 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
17616
17617         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
17618           the constructor through a proxy.
17619
17620 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17621
17622         * jit-icalls.c, inssel.brg: fixes to array element address
17623         calculations.
17624
17625 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
17626
17627         * mini-x86.c (is_regsize_var): allocate pointer to registers
17628
17629 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17630
17631         * driver.c: fixed typo, added intrins to the set of optimizations
17632         tested with regressions.
17633
17634 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
17635
17636         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
17637         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
17638         test case.
17639
17640 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
17641
17642         * inssel.brg: remove some common pop instructions without side effects
17643
17644 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17645
17646         * inssel-x86.brg: fixed thinko in int to double conversions.
17647
17648 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
17649
17650         * mini.c, jit-icalls.c: added runtime thread-static variable support.
17651
17652 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17653
17654         * inssel-long32.brg: two more missing instructions.
17655
17656 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
17657
17658         * mini.c (mono_emit_call_args): set the cil_code for all arguments
17659         if not already set.
17660
17661 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
17662
17663         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
17664         correctly.
17665
17666         * basic-float.cs: Added tests for negative zero.
17667
17668 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17669
17670         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
17671         a couple of missing operations for long casts, with test cases.
17672
17673 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17674
17675         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
17676
17677 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
17678
17679         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
17680         code size estimation.
17681
17682 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
17683
17684         * mini.c (mono_jit_create_remoting_trampoline): make it work with
17685         abstract methods (fix bug 42542)
17686
17687         * aot.c: add ability to handle array types
17688         
17689 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
17690
17691         * mini.c: Call the _specific versions of the object allocation
17692         functions if possible.
17693
17694 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17695
17696         * driver.c: call setlocale ().
17697
17698 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17699
17700         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
17701         windows build.
17702
17703 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
17704
17705         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
17706
17707         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
17708         wrappers (fix bug 42122)
17709
17710 2003-05-04  Martin Baulig  <martin@ximian.com>
17711
17712         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
17713
17714         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
17715         s/mini_set_defaults/mono_set_defaults/g.
17716
17717 2003-05-04  Martin Baulig  <martin@ximian.com>
17718
17719         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
17720
17721 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17722
17723         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
17724         (reported by Don Roberts).
17725
17726 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17727
17728         * mini.c: temporarily work around two bugs for this release.
17729
17730 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17731
17732         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
17733         that contains -export-dynamic and it makes using the ld script
17734         useless.
17735         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
17736
17737 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17738
17739         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
17740         specific cpu.
17741
17742 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17743
17744         * mini.c: make sure leave calls all the needed finally blocks,
17745         even when the target jumps out of multiple exception clauses.
17746
17747 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17748
17749         * ldscript, Makefile.am: add linker script to reduce the number of
17750         exported symbols (should also fix the issues with libwine defining
17751         some of the same symbols in io-layer).
17752
17753 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
17754
17755         * driver.c (mini_main): Avoid assertion when no file name is given on 
17756         the command line.
17757
17758 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
17759
17760         * driver.c: added --version/-V command line option.
17761         Added the inline optimization in the regression tests.
17762
17763 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17764
17765         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
17766         to the type in the method signature (fixes bug#42134).
17767
17768 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
17769
17770         * mini.c: when inlining, check this is not null only when needed (bug #42135).
17771
17772 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
17773
17774         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
17775
17776 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17777
17778         * driver.c: fixed bug #42100.
17779
17780 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
17781
17782         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
17783
17784 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17785
17786         * mini.c: moved most of the code required to do inlining to its own
17787         function so it can be reused. Inline also ctors if appropriate.
17788
17789 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
17790
17791         * Makefile.am: Link with -export-dynamic so shared libs loaded by
17792         the runtime can call mono API functions.
17793
17794 2003-04-27  Martin Baulig  <martin@ximian.com>
17795
17796         * debug-mini.c (mono_debug_init_method): Added
17797         `guint32 breakpoint_id' argument; if the method has a breakpoint,
17798         send a notification to the debugger.
17799
17800         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
17801         running in the Mono Debugger, just pass the breakpoint number to
17802         mono_debug_init_method().
17803
17804         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
17805
17806 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
17807
17808         * mini.c: allow some more unsafe compares.
17809
17810 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17811
17812         * mini-x86.c, Makefile.am: make distcheck works (partially from
17813         a patch by Richard Lee <r.h.lee@attbi.com>).
17814         * regset.c, regset.h: removed, they are unused.
17815
17816 2003-04-25  Dick Porter  <dick@ximian.com>
17817
17818         * driver.c: Usage reports the name as 'mono' not 'mini'
17819         * exceptions-x86.c: Build and run on freebsd
17820
17821 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
17822
17823         * Makefile.am: install the program with the 'mono' name and
17824         the library as libmono instead of mini and libmini.
17825
17826 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17827
17828         * driver.c: provide the APIs for the embedding interface of the old jit.
17829
17830 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
17831
17832         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
17833
17834 2003-04-23  Martin Baulig  <martin@ximian.com>
17835
17836         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
17837
17838         * driver.c: Added `--debug' command line argument to enable
17839         debugging support.
17840
17841 2003-04-23  Martin Baulig  <martin@ximian.com>
17842
17843         * debug.[ch]: Removed.  The code is now in
17844         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
17845
17846         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
17847         last six months.
17848
17849 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
17850
17851         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
17852
17853 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17854
17855         * mini.c:
17856         (mini_cleanup): moved mono_runtime_cleanup call after the call to
17857         mono_domain_finalize.
17858         (mini_method_compile): use mono_method_profile* if the the option is
17859         enabled.
17860
17861 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
17862
17863         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17864         methods with their wrapper.
17865
17866         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17867         methods with their wrapper.
17868
17869         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
17870         their wrapper.
17871
17872         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
17873         wrapper.
17874
17875         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
17876         methods.
17877
17878 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
17879
17880         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
17881
17882 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
17883
17884         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
17885         of the mempool. This is slightly faster and uses less memory
17886
17887 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17888
17889         * mini.c: avoid O(n) allocation for variables.
17890
17891 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17892
17893         * mini.c: handle items on the stack after inlining methods.
17894
17895 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17896
17897         * mini.c: make the method->opcode optimization dependent
17898         on MONO_OPT_INSTRINS and do it lazily.
17899
17900 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17901
17902         * driver.c: print overall results at the end of regression run.
17903
17904 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
17905
17906         * inssel.brg: don't overwrite symbolic registers.
17907
17908 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17909
17910         * inssel-x86.brg: fix conversion from long to float.
17911
17912 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
17913
17914         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
17915
17916 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
17917
17918         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
17919
17920         * driver.c: Added --print-vtable option as in the old JIT.
17921
17922 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17923
17924         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
17925
17926 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
17927
17928         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
17929
17930 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
17931
17932         * mini.c regalloc.c regalloc.h: Fix memory leak.
17933
17934 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
17935
17936         * aot.c (mono_aot_get_method): register all used strings
17937
17938 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17939
17940         * mini.c: always intern strings references with ldstr at compile time.
17941
17942 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17943
17944         * Makefile.am: add BUILT_SOURCES.
17945
17946 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17947
17948         * driver.c: give a better error message when the assembly to execute
17949         doesn't have an entry point.
17950
17951 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
17952
17953         * Makefile.am: added hack for automake
17954
17955         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
17956         correct sematics.
17957
17958         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
17959
17960 22003-04-07  Martin Baulig  <martin@ximian.com>
17961
17962         * Makefile.am: Added Makefile.am.
17963
17964         * debugger-main.c: Removed, this is now in the debugger where it
17965         belongs.
17966
17967         * mini.pc.in: Call this package `mini' for the moment.
17968
17969
17970
17971
17972
17973
17974
17975
17976
17977
17978
17979
17980
17981