2008-12-07 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
2
3         * unwind.c: New file, move the unwind info encoding functions here from
4         aot-compiler.c, so they could be used at runtime too.
5
6 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7
8         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
9         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
10         
11 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
12
13         * mini-mips.c: cleanup warnings
14         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
15         (mips_adjust_stackframe): handle case of taking the address of stack locals
16         
17 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
18
19         * aot-compiler.c: Implement a few functions missing from the asm writer.
20         (emit_method_code): Only write symbols for methods when using the bin
21         writer, since the assembler can't deal with the characters in our method
22         names.
23
24         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
25
26         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
27         call.
28
29         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
30         a bit to also restore %rax.
31
32 2008-12-05  Mark Probst  <mark.probst@gmail.com>
33
34         * mini-ppc.c: Some simple merges from mini-ppc64.c.
35
36 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
37
38         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
39         arguments.
40
41 2008-12-05  Mark Probst  <mark.probst@gmail.com>
42
43         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
44
45         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
46         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
47
48         * exceptions-ppc64.c: Removed.
49
50         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
51
52 2008-12-05  Mark Probst  <mark.probst@gmail.com>
53
54         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
55         tramp-ppc64.c.
56
57         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
58
59         * tramp-ppc64.c: Removed.
60
61 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
62
63         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
64         the TYPESPEC table.
65
66 2008-12-05  Mark Probst  <mark.probst@gmail.com>
67
68         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
69
70         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
71         mini-ppc.h instead of mini-ppc64.h.
72
73         * mini-ppc64.h: Removed.
74
75 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
76
77         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
78         
79         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
80         
81 2008-12-05  Mark Probst  <mark.probst@gmail.com>
82
83         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
84         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
85         code easier.
86
87 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
88
89         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
90
91 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
92
93         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
94
95 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
96
97         * basic-simd.cs: Tests for operator == and != on Vector4f.
98
99 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
100
101         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
102
103         * simd-intrinsics.c: Kill useless enum.
104
105 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
106
107         * cpu-mips.md: add long_conv_to_ovf_i4_2
108         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
109
110 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
111
112         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
113         
114         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
115
116 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
117
118         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
119         
120 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
121
122         * basic-simd.cs: Add tests for new methods.
123
124 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
125
126         * simd-intrinsics.c: Add support for operator == and !=
127         on Vector4(u)i.
128
129         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
130
131 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
132
133         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
134
135 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
136
137         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
138
139         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
140         MONO_PATCH_INFO_ICALL_ADDR.
141
142         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
143
144         * aot-compiler.c: Resurrect full-aot support.
145
146 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
147
148         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
149         
150 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
151
152         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
153         
154 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
155
156         * basic-simd.cs: Fix tests to work under ppc.
157         Remove tests for methods that will be removed.
158
159 2008-12-03  Mark Probst  <mark.probst@gmail.com>
160
161         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
162         generic type (via a typedef or typeref) correctly.
163
164 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
165
166         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
167         diagnose an assertion failure.
168
169 2008-12-02  Mark Probst  <mark.probst@gmail.com>
170
171         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
172         Fix trampoline size.
173
174         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
175         conversion opcodes are implemented natively instead via emulation.
176
177 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
178
179         * cpu-mips.md: remove mips_xori
180
181         * mini-ops.h:  remove mips_xori
182
183         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
184
185         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
186         
187         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
188         
189 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
190
191         * cpu-mips.md: fix instruction lengths.
192
193         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
194
195         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
196
197         * mini-ops.h: fix slti / sltiu op profiles.
198         
199 2008-12-02  Martin Baulig  <martin@ximian.com>
200
201         * method-to-ir.c (mono_method_to_ir): Disable debugging
202         information for the init locals block to make the debugger stop
203         after all locals have been initalized.
204
205 2008-12-02  Martin Baulig  <martin@ximian.com>
206
207         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
208         running inside the debugger.
209
210 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
211
212         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
213         is enabled.
214
215         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
216         alu->alu imm optimization which only shows if deadce is disabled.
217
218         * aot-compiler.c: Rename the function names for the binary and asm writers
219         so they can coexist in the same process. Rework the xdebug code to use the
220         asm writer. This avoids the need to call into the runtime to dump the
221         debugging info. Add more debugging info for types.
222
223         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
224
225         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
226         cpu description tables, they can't occur in cpu-<ARCH>.md.
227
228         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
229         the stack in CEE_LDFLDA. Fixes #450542.
230
231         * generics.cs: Add a new test.
232
233 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
234
235         * mini-ops.h: updated MIPS opcodes
236         * mini-mips.c: decompose long opts
237         * mini-mips.h: decompose long opts
238         
239 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
240
241         * cpu-mips.md: fix length on int_rem_un
242         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
243         
244 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
245
246         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
247
248         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
249
250 2008-11-29  Martin Baulig  <martin@ximian.com>
251
252         * mini-exceptions.c (mono_handle_native_sigsegv): Check
253         mono_debug_using_mono_debugger() in addition to the
254         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
255
256 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
257
258         * mini-ops.h: updated more MIPS opcodes
259         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
260         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
261         
262 2008-11-28  Mark Probst  <mark.probst@gmail.com>
263
264         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
265
266 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
267
268         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
269         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
270         * mini-ops.h: correct selected mips opcode entries
271         
272 2008-11-28  Mark Probst  <mark.probst@gmail.com>
273
274         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
275         make them work.
276
277 2008-11-28  Mark Probst  <mark.probst@gmail.com>
278
279         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
280
281 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
282
283         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
284         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
285         * mini-mips.h: disable IMT
286         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
287         
288 2008-11-28  Mark Probst  <mark.probst@gmail.com>
289
290         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
291
292 2008-11-28  Mark Probst  <mark.probst@gmail.com>
293
294         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
295
296 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
297
298         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
299         consistency.
300
301 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
302
303         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
304         for Set/GetVector aligned versions.
305
306 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
307
308         * basic-simd.cs: Add tests for Get/SetVector.
309
310 2008-11-27  Mark Probst  <mark.probst@gmail.com>
311
312         * mini.c: Removed g_slist_append_mempool().  Now in
313         metadata/mempool.c.
314
315 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
316
317         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
318         size properly and make the bounds check optional.
319
320         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
321         for SetVector and IsAligned.
322
323 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
324
325         * mini.c: Remove unused mono_normalize_opcodes () function.
326
327 2008-11-26  Mark Probst  <mark.probst@gmail.com>
328
329         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
330         using the new atomic add ops now.
331
332         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
333         add.
334
335 2008-11-26  Mark Probst  <mark.probst@gmail.com>
336
337         * mini-ppc64.c: Several fixes.
338
339 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
340
341         * cpu-mips.md: added jump_table
342         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
343
344 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
345
346         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
347
348 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
349
350         * mini-ops.h: corrected a handful of MIPS opcodes.
351
352 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
353
354         * aot-compiler.c: MIPS to use ELF writer
355
356 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
357
358         * mini-codegen.c: remove MIPS specific assert.
359
360 2008-11-25  Mark Probst  <mark.probst@gmail.com>
361
362         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
363         fixes.  PPC64 now passes most of the runtime regressions.
364
365 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
366
367         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
368         volatile intervals a bit.
369
370 2008-11-24  Mark Probst  <mark.probst@gmail.com>
371
372         * basic-long.cs: New test case.
373
374 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
375
376         * mini.c (mini_method_compile): Disable globalra for large methods for 
377         now.
378
379         * regalloc2.c (order_moves): Add fp support.
380
381         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
382         source bblock ends with an OP_BR_REG.
383
384         * ratests.cs: Add a new test.
385
386 2008-11-23  Mark Probst  <mark.probst@gmail.com>
387
388         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
389         sharing.  PPC64 now passes generics.exe.
390
391 2008-11-23  Mark Probst  <mark.probst@gmail.com>
392
393         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
394
395 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
396
397         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
398         memory when mono_jit_info_table_find () can't find the method in the
399         LMF case.
400
401         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
402         AOTed code too.
403         
404         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
405         writer too.
406
407 2008-11-23  Mark Probst  <mark.probst@gmail.com>
408
409         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
410         Several fixes.  PPC64 now runs exceptions.exe and
411         devirtualization.exe.
412
413 2008-11-22  Mark Probst  <mark.probst@gmail.com>
414
415         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
416         arrays.exe and basic-math.exe.
417
418 2008-11-22  Mark Probst  <mark.probst@gmail.com>
419
420         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
421         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
422
423 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
424
425         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
426
427 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
428
429         * method-to-ir.c: Move bounds checking macros to ir-emit.h
430
431         * ir-emit.h: Move macros from method-to-ir.c to here.
432
433 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
434
435         * mini-ops.h: Correct the long simd ops to use LREG.
436
437 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
438
439         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
440         
441         * mini-ops.h: Correct the dreg type of a few long opcodes.
442
443         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
444         Add netbsd support.
445
446 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
447
448         * mini-ppc.c: remove negative stack references in epilog
449         for platforms that don't support the red zone.
450
451 2008-11-21  Mark Probst  <mark.probst@gmail.com>
452
453         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
454         point regs.  Now PPC64 passes basic-calls.exe.
455
456 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
457
458         * basic-simd.cs: Add tests for accessors of Vector2l.
459
460 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
461
462         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
463
464         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
465         
466         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
467
468 2008-11-21  Mark Probst  <mark.probst@gmail.com>
469
470         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
471         PPC64 passes basic-long.exe.
472
473 2008-11-20  Mark Probst  <mark.probst@gmail.com>
474
475         * decompose.c: Decompose carry and overflow add on PPC64 like on
476         other 64 bit archs.  Don't decompose sub at all on PPC64.
477
478         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
479         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
480         basic-long.exe.
481
482 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
483
484         * basic-simd.cs: Add tests for accessors of Vector2d.
485
486 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
487
488         * mini-ops.h: Added OP_INSERTX_R8_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 Vector2d.
495
496 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
497
498         * basic-simd.cs: Add tests for accessors of Vector4f.
499
500 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
501
502         * mini-ops.h: Added OP_INSERTX_R4_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 Vector4f.
509
510 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
511
512         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
513
514 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
515
516         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
517
518         * cpu-x86.md: Same.
519
520         * mini-x86.c (mono_arch_output_basic_block): Same.
521         
522         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
523
524 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
525
526         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
527
528 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
529
530         * simd-intrinsics.c: Enable setters for Vector16sb.
531
532 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
533
534         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
535
536         * cpu-x86.md: Same.
537
538         * mini-x86.c (mono_arch_output_basic_block): Same.
539         
540         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
541
542 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
543
544         * simd-intrinsics.c: Implement setter for Vector8us.
545
546 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
547
548         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
549         for dead variables.
550
551 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
552
553         * mini-ppc.c: remove references to the red zone in the prolog
554         (for systems that don't support it).
555
556 2008-11-19  Mark Probst  <mark.probst@gmail.com>
557
558         * cpu-ppc64.md: Fixed a few instruction lengths.
559
560         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
561         now.
562
563 2008-11-19  Mark Probst  <mark.probst@gmail.com>
564
565         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
566         basic.exe now.
567
568 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
569
570         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
571
572 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
573
574         * mini-ops.h: Added OP_INSERT_I2.
575
576         * cpu-x86.md: Same.
577
578         * mini-x86.c (mono_arch_output_basic_block): Same.
579         
580         * simd-intrinsics.c: Implement setter for Vector8s.
581
582         * simd-methods.h: Add the names of get setters of Vector8s.
583
584 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
585
586         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
587         
588         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
589         parameters.
590
591         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
592
593 2008-11-18  Mark Probst  <mark.probst@gmail.com>
594
595         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
596         for PPC64.  An empty program runs now.
597
598 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
599
600         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
601
602         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
603         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
604         info for JITted code is emitted into a shared library, loadable into gdb.
605
606 2008-11-18  Mark Probst  <mark.probst@gmail.com>
607
608         * Makefile.am: Changes to build PPC64.
609
610         * mini-arch.h: Include mini-ppc64.h on PPC64.
611
612 2008-11-18  Mark Probst  <mark.probst@gmail.com>
613
614         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
615         in PPC code up to r119147.
616
617 2008-11-18  Mark Probst  <mark.probst@gmail.com>
618
619         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
620         cpu-ppc64.md: Changes for PPC64.
621
622         Based on code submitted by andreas.faerber@web.de at
623         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
624         X11/MIT license.
625
626 2008-11-18  Mark Probst  <mark.probst@gmail.com>
627
628         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
629         cpu-ppc64.md: Copied from the corresponding PPC files from
630         r118846.
631
632 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
633
634         * mini-ops.h: Added OP_ROUND.
635
636         * cpu-x86.md: Added round.
637
638         * mini-x86.c: Added support for intrinsicing Math.Round (double).
639
640         * basic-math.cs: Added test_0_round to test rounding.
641
642         Contributed under MIT/X11 license.
643
644 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
645
646         * aot-compiler.c : Fix the Winx64 build.
647
648         Contributed under MIT/X11 license.
649
650 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
651
652         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
653         in OP_EXTRACT_R8 to avoid possible stack corruption.
654
655 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
656
657         * mini-ops.h: Added OP_EXTRACT_R8/I8.
658
659         * cpu-x86.md: Added extract_r8.
660
661         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
662         
663         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
664         a couple of OP_EXTRACT_I4.
665
666         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
667
668         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
669
670 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
671
672         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
673         and not 4.1. 
674
675 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
676
677         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
678         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
679
680         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
681         are not needed any more.
682
683         * mini.h: Remove the unused INS_LIST macros.
684
685         * mini.c (mini_method_compile): Remove a disable globalra case which is no
686         longer needed.
687
688         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
689         ir-emit.h.
690
691         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
692         mono_alloc_ireg () instead.
693
694         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
695         macros.
696
697         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
698         on amd64.
699
700         * aot-runtime.c (load_aot_module): Disable AOT when running under
701         CAS.
702
703         * mini-amd64.h: Change the monitor fastpath defines to check for
704         !PLATFORM_WIN32 so they work on *bsd too.
705
706         * mini.h mini.c mini-hhpa.c: Remove more unused code.
707
708         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
709
710         * mini.h (MonoCompile): Remove new_ir flag.
711
712         * regalloc.h regalloc.c: Remove unused code.
713
714         * cpu-*.md: Remove more unused opcodes.
715
716         * simple-cee-ops.h simple-mini-ops.h: Removed.
717
718         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
719         
720 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
721
722         * aliasing.h: Removed.
723
724         * *.c: Remove references to aliasing.h and inssel.h.
725
726         * mini.c: Remove additional unused functions.
727
728         * mini-ops.h cpu-*.md: Remove unused opcodes.
729
730 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
731
732         Remove the old JIT code.
733
734         * inssel*.brg: Removed.
735
736         * ssa.c abcremoval.c aliasing.c: Removed.
737
738         * ssa2.c: Renamed to ssa.c.
739
740         * abcremoval2.c: Renamed to abcremoval.c.
741
742         * *.c: Removed all !cfg->new_ir code.
743
744         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
745         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
746
747         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
748         
749 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
750
751         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
752         to simplify the code and cut back on the number of global symbols in the AOT
753         file.
754         
755         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
756
757 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
758
759         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
760         with the got/got_info tables.
761
762         * mini.h: Bump AOT file format version.
763         
764         * unwind.h: New file, contains definitions for stack unwinding.
765
766         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
767         to cfg->unwind_ops.
768         
769         * aot-compiler.c: Generalize the emitting of unwind information to use the
770         information in cfg->unwind_ops.
771
772         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
773
774         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
775         AOT method frames. Enable writing symbols for methods by default.
776
777 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
778
779         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
780         and make it work with vectors of element sizes 1, 2 and 4.
781
782         * simd-intrinsics.c: Enable getter for all vectors with element size
783         1, 2 or 4.
784
785         * simd-methods.h: Add the names of other getters.
786
787         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
788
789         * cpu-x86.md: Same.
790
791         * mini-x86.c: Same.
792
793 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
794
795         * mini-ppc.h: portability fix.
796
797 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
798
799         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
800         buggy and will overwrite it.
801
802 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
803
804         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
805         Use it to emit local symbols for all methods so AOTed methods show up with
806         their full name in gdb/valgrind output.
807
808 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
809
810         * mini-ppc.c: portability fixes.
811
812 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
813
814         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
815         entries out of the if (!generic_shared...) code so it is always done.
816         (mono_class_init_trampoline): Do the patching when running under valgrind
817         too, newer versions of valgrind have no problems with it.
818
819 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
820
821         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
822         further sections.
823
824 2008-11-13  Mark Probst  <mark.probst@gmail.com>
825
826         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
827         filters.
828
829 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
830
831         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
832
833 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
834
835         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
836
837         * cpu-x86.md: Same.
838
839         * mini-x86.c: Same.
840
841         * simd-intrinsics.c: Same.
842
843 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
844
845         * simd-intrinsics.c: Enable constructor intrinsics for all types.
846
847 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
848
849         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
850         to work with more Vector types.
851
852 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
853
854         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
855         store the elemens directly instead of using and intermediate.
856
857 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
858
859         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
860
861         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
862         to preserve %eax for aot plt trampolines.
863
864         * aot-compiler.c (compile_method): Don't skip synchronized methods.
865         (encode_method_ref): Flag synchronized methods so they won't go through
866         the AOT trampoline.
867
868         * aot-compiler.c: Additional work to support AOTing synchronized methods/
869         wrappers.
870
871         * cpu-ia64.md (jmp): Increase max length.
872
873 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
874
875         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
876         open generic classes.
877
878         * aot-compiler.c: Enable the ELF writer on ELF platforms.
879
880         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
881         box+brtrue optimization since it causes test failures on x86.
882
883 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
884
885         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
886
887         * cpu-x86.md: Same.
888
889         * mini-x86.c: Same.
890
891         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
892         for simd ctor values. 
893
894         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
895         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
896
897 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
898
899         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
900         LogicalRightShift.
901
902         * simd-instrincs.c: Same.
903
904         * basic-simd.cs: Same.
905
906 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
907
908         * ratests.cs: Add more tests.
909
910         * regalloc2.c (add_spill_code): Handle more corner cases.
911
912 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
913
914         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
915         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
916         both the source an destination of an instruction.
917
918 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
919
920         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
921         wapihandles.c: more portability changes.
922
923 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
924
925         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
926         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
927         safe to execute in a signal handler and the kernel provides better
928         the info in /proc/self/smaps. Avoid the assert on sigaction during
929         cleanup.
930
931 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
932
933         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
934         do the bblock linking hack if it is actually needed.
935
936         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
937         up linking.
938
939         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
940         crash problem is fixed.
941
942         * branch-opts.c (mono_remove_critical_edges): Link up newly added
943         bblocks.
944
945         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
946         for catch clauses.
947         (mini_method_compile): Set the starting value of next_vreg to 
948         MAX_IREGS + MAX_FREGS when using globalra.
949
950         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
951         filter clauses with BB_EXCEPTION_HANDLER.
952
953         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
954
955 2008-11-10  Mark Probst  <mark.probst@gmail.com>
956
957         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
958         space for stdcall.  Fixes regressions on Win32.
959
960 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
961
962         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
963         bblocks.
964         (linear_scan): Remove an assert which doesn't seem to be needed.
965
966         * local-propagation.c (mono_local_deadce): Avoid a call to
967         MONO_DELETE_INS which would screw up the instruction linking.
968
969         * mini.c (mono_decompose_op_imm): Make this work with globalra.
970
971         * regalloc2.c: Upgrade to work the current JIT code.
972
973 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
974
975         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
976         case.
977
978         * aot-runtime.c: Remove some dead code.
979
980         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
981         consistency.
982         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
983
984         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
985         trampolines using sscanf since atoi doesn't work on large unsigned values.
986
987         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
988         Initialize code_size.
989
990 2008-11-08  Mark Probst  <mark.probst@gmail.com>
991
992         * method-to-ir.c (mini_emit_inst_for_method): Make
993         Interlocked.CompareExchange work for Int arguments on 32 bit
994         archs, as well.
995
996 2008-11-07  Mark Probst  <mark.probst@gmail.com>
997
998         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
999
1000 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
1001
1002         * main.c Fix MSVC build.
1003
1004         Contributed under MIT/X11 license.
1005
1006 2008-11-06  Mark Probst  <mark.probst@gmail.com>
1007
1008         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
1009         alignment larger than 8 bytes are aligned correctly, too.
1010
1011         * mini.c: Honor the min_align field of MonoClass when laying out
1012         the stack.
1013
1014 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
1015
1016         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
1017
1018         * aot-compiler.c (emit_plt): Fix a warning.
1019         
1020         * aot-compiler.c: Implement ARM support in the binary writer.
1021
1022 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1023
1024         * basic-simd.cs: Add test for getter with byref arg.
1025         Fix the naming of a few tests.
1026         Add missing checks to a test.
1027
1028 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
1029
1030         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
1031
1032         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
1033         most of the full-aot support for monitor enter/exit trampolines.
1034
1035         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
1036         enter/exit trampoline creation functions.
1037
1038         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
1039         make dist.
1040
1041 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
1042
1043         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
1044         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
1045         implement the needed functionality without adding crap to the runtime.
1046
1047 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
1048
1049         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
1050         non-x86 builds.
1051
1052         * mini.c (mono_build_date): New global version holding the build date in
1053         string format.
1054         
1055         * Makefile.am (buildver.c): Generate a file containing the build date.
1056
1057         * main.c: Set the build date from the generated file.
1058
1059         * mini.c (mono_get_runtime_build_info): New helper function returning build
1060         information in a string format.
1061         
1062         * driver.c (mono_main): Print the build date in --version.
1063
1064         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
1065         file when the bind-to-runtime-version option is used.
1066
1067 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1068
1069         * simd-intrinsics.c: Fix bug when using getters and byref args. 
1070
1071 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1072
1073         * simd-methods.h: Rename prefetch methods.
1074
1075         * simd-intrinsics.c: Same.      
1076
1077 2008-11-05  Mark Probst  <mark.probst@gmail.com>
1078
1079         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
1080         sizes.
1081
1082 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1083
1084         * aot-compiler.c: Use the bundled elf header files instead of depending on
1085         the system one.
1086         
1087         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
1088         mempool.
1089
1090         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
1091         on every call.
1092
1093 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
1094
1095         * cpu-x86.md: Add store nta ops.
1096
1097         * mini-ops.h: Same.
1098
1099         * mini-x86.c: Same.
1100
1101         * mini.h: Add an enum for simd prefetch modes.
1102
1103         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
1104         of store. Use the changed code to support store nta.
1105
1106         * simd-intrinsics.c: Add prefetch ops for all vector types.
1107
1108 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1109
1110         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
1111         threads.
1112         
1113         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
1114         names.
1115
1116         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
1117         trampolines.
1118
1119 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1120
1121         * mini-x86.c: Fixed commit.
1122
1123 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1124
1125         * aot-compiler.c (emit_plt): Align the plt section only on x86.
1126
1127 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1128
1129         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
1130         and MONITOR_EXIT, for the ASM fastpaths.
1131
1132         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
1133         available.
1134
1135         * mini.c, patch-info.h: Signature and patch infos for
1136         Monitor.Enter/Exit trampolines.
1137
1138         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
1139
1140         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
1141         Monitor.Enter/Exit ASM fastpath for Linux.
1142
1143 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1144
1145         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
1146
1147         * objects.cs: Add a new test.
1148         
1149         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
1150
1151         * aot-runtime.c (load_method): Run class initialization in the PLT case even
1152         if MONO_LOG_LEVEL is set.
1153
1154         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
1155
1156         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
1157
1158         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
1159         
1160         * aot-compiler.c: Change the relocation code to use virtual addresses instead
1161         of file offsets. Align the sections belonging to the data segment to 
1162         PAGESIZE.
1163
1164 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
1165
1166         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
1167         elf.h. Port it to amd64.
1168
1169 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1170
1171         * driver.c: Enable SIMD by default.
1172
1173 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1174
1175         * cpu-x86.md: Add prefetch op.
1176
1177         * mini-ops.h: Same.
1178
1179         * mini-x86.c: Same.
1180
1181         * mini.h: Add an enum for simd prefetch modes.
1182
1183         * simd-methods.h: Add prefetch function names.
1184
1185         * simd-intrinsics.c: Add prefetch ops for all vector types.
1186
1187 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
1188
1189         * aot-compiler.c (emit_bytes): Speed this up a little.
1190
1191 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
1192
1193         * aot-compiler.c: Add JIT time etc. statistics.
1194         
1195         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
1196
1197         * mini.h (MonoCompile): Add 'got_offset' field.
1198
1199         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
1200         method_got_offsets array.
1201
1202         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
1203         wrappers.
1204
1205         * aot-compiler.c (compile_method): Add generic method instances referenced
1206         by the method to the list of methods to be compiled, this is required so if
1207         A<T> references B<T>, and another assembly references A<int>, then it will
1208         also get a copy of B<int>.
1209
1210         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
1211         when checking for monitor enter/exit.
1212
1213 2008-10-30  Mark Probst  <mark.probst@gmail.com>
1214
1215         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
1216         for Monitor.Enter and Monitor.Exit if enabled.
1217
1218         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
1219         Solaris.
1220
1221 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
1222
1223         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
1224         of an OP_MOVE. Fixes #440046.
1225
1226         * basic-long.cs: Add a new test.
1227
1228 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
1229
1230         * mini.h: Add synchronization note for the managed counter-part.
1231
1232         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
1233         returns the simd caps of the current cpu.
1234
1235 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
1236
1237         * basic-simd.cs: Remove Console.WriteLine.
1238
1239 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1240
1241         * basic-simd.cs: New tests for Vector2ul.
1242
1243 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1244
1245         * simd-intrinsics.c: Add new vector type Vector2ul.
1246
1247 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1248
1249         * basic-simd.cs: New tests for Vector2l.
1250
1251 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1252
1253         * cpu-x86.md: Add long version of most packed int ops.
1254
1255         * mini-ops.h: Same.
1256
1257         * mini-x86.h: Same.
1258
1259         * simd-intrinsics.c: Add new vector type Vector2l.
1260
1261 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1262
1263         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
1264
1265         * simd-methods.h: Remove SN_op_BitwiseXor.
1266
1267 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
1268
1269         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
1270         alignment.
1271
1272 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1273
1274         * basic-simd.cs: Test for Vector2d.
1275
1276         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
1277         value.
1278
1279 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1280
1281         * cpu-x86.md: Add double version of all packed float ops.
1282
1283         * mini-ops.h: Same.
1284
1285         * mini-x86.h: Same.
1286
1287         * simd-intrinsics.c: Add new vector type Vector2d.
1288
1289         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
1290
1291         * simd-methods.h: Add Duplicate.
1292
1293 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1294
1295         * basic-simd.cs: Test for packing with signed saturation.
1296
1297 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
1298
1299         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
1300         found in the TYPESPEC table.
1301
1302 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
1303
1304         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
1305         too.
1306
1307         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
1308
1309         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
1310         instead of the RVA, since the RVA can be changed by tools like the cil 
1311         stripper.
1312
1313         * method-to-ir.c (mono_method_to_ir2): Ditto.
1314
1315         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
1316         (deserialize_variable): Ditto.
1317
1318 2008-10-25  Martin Baulig  <martin@ximian.com>
1319
1320         * debug-mini.c (write_variable): Use
1321         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
1322
1323 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1324
1325         * cpu-x86.md: Add unsigned variants of packd and packw.
1326
1327         * mini-ops.h: Same.
1328
1329         * mini-x86.h: Emit the right instruction for packd and packw.
1330         Add unsigned variants of packd and packw.
1331
1332         * simd-intrinsics.c: Packd and packw were used in place of their
1333         unsigned variants. Change that.
1334         Add intrinsics for (Signed)PackWithSignedSaturation.
1335
1336         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
1337
1338 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1339
1340         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
1341
1342 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1343
1344         * mini-ops.h: Remove dword packed add/sub with saturation ops.
1345
1346         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
1347
1348         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
1349         sse instructions.
1350
1351         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
1352
1353 2008-10-24  Mark Probst  <mark.probst@gmail.com>
1354
1355         * method-to-ir.c, mini.c: Special casing for the synchronized
1356         wrapper for the ldtoken+GetTypeFromHandle case.
1357
1358 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1359
1360         * mini.c (mono_replace_ins): Move this to branch-opts.c.
1361
1362         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
1363         created/split bblocks.
1364
1365 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1366
1367         * mini-ops.h: Add packed signed mul high.
1368         
1369         * cpu-x86.md: Same.
1370
1371         * mini-x86.c (mono_arch_output_basic_block): Same.
1372
1373         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
1374
1375         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
1376
1377 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1378
1379         * basic-simd.cs: Tests for Vector16sb.
1380
1381 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1382
1383         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
1384
1385 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1386
1387         * mini-ops.h: Add packed signed min, max and compare greater.
1388         
1389         * cpu-x86.md: Same.
1390
1391         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
1392         saturation.
1393
1394         * simd-methods.h: Add CompareGreaterThan.
1395
1396         * simd-methods.h: Remove CompareEquals.
1397
1398         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
1399
1400         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
1401
1402         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
1403         CompareEqual.
1404
1405 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1406
1407         * basic-simd.cs: Fix tests due to change in the API.
1408
1409 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1410
1411         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
1412
1413 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1414
1415         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
1416
1417         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
1418         inst_offset as this has invalid values for LDADDR.
1419
1420 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1421
1422         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1423
1424         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
1425
1426 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1427
1428         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
1429         for accessing field->data.
1430
1431 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1432
1433         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1434
1435 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1436
1437         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
1438
1439         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
1440
1441 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1442
1443         * dominators.c (mono_compute_natural_loops): Allocate GList enties
1444         from the cfg mempool.
1445
1446 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1447
1448         * basic-simd.cs: Tests for new methods in Vector8us.
1449
1450 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1451
1452         * mini-ops.h: Add multiply and store high.
1453         
1454         * cpu-x86.md: Same.
1455
1456         * mini-x86.c (mono_arch_output_basic_block): Same.
1457
1458         * simd-methods.h: Same.
1459
1460         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
1461         and CompareEqual.
1462
1463 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1464
1465         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
1466         mono_class_setup_vtable ().
1467
1468         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
1469         mono_class_get_vtable_entry () for accessing klass->vtable.
1470
1471         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
1472
1473         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
1474         found.
1475
1476         * method-to-ir.c (mono_save_token_info): Don't save references made from
1477         wrappers.
1478
1479         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
1480         of generic instances.
1481
1482         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
1483
1484 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1485
1486         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
1487         OP_JMP depends on the method signature.  Calculate it properly.
1488
1489 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1490         
1491         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
1492         called directly.
1493
1494         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
1495         instances.
1496         (emit_extra_methods): Add another table mapping method indexes to 
1497         offsets in the extra_method_info table.
1498
1499         * mini.h: Bump AOT file format version.
1500         
1501         * aot-runtime.c: Merge most of the code from mono_aot_get_method
1502         and mono_aot_get_method_from_token () into one function.
1503
1504 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1505
1506         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
1507         separate counter.
1508
1509 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
1510
1511         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
1512         methods.
1513
1514         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
1515         disable_aot.
1516
1517         * mini.c (mono_patch_info_equal): Compare the generic context as well.
1518
1519         * mini.h: Bump aot file format version.
1520
1521         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
1522         AOT file can contain native code for methods which are not in the METHOD
1523         table. Generate code for non-sharable generic instances of generic methods
1524         found in the METHODSPEC table.
1525         
1526         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
1527         encoding generic type handles.
1528
1529         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
1530         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
1531
1532         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
1533         macros + MONO_ADD_INS.
1534
1535         * mini.c (mono_jump_info_token_new2): New function which takes a generic
1536         context as well.
1537
1538         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
1539
1540         * mini.h: Bump aot file format version.
1541
1542         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
1543
1544 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1545
1546         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
1547         platforms, with definable stack alignment value.  Set to 16 now
1548         for all platforms.
1549
1550         * mini.c, mini.h, driver.c: Command line option for disabling
1551         stack alignment.
1552
1553 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1554
1555         * basic-simd.cs: Tests for new methods in Vector4ui.
1556
1557 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1558
1559         * mini-ops.h: Add packed int shuffle.
1560         
1561         * cpu-x86.md: Same.
1562
1563         * mini-x86.c (mono_arch_output_basic_block): Same.
1564
1565         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
1566         extract mask, max, min, shuffle.
1567
1568         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
1569
1570 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1571
1572         * basic-simd.cs: Tests for new methods in Vector8us.
1573
1574 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1575
1576         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
1577         RuntimeTypeHandle, not a TypedReference.
1578
1579 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
1580
1581         * simd-intrinsics.c: remove relocations.
1582
1583 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
1584
1585         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
1586         optimizations from the x86 backend.
1587
1588 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
1589
1590         * simd-methods.h, simd-intrinsics.c: debloat method names and
1591         prepare for no relocations.
1592
1593 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1594
1595         * mini-ops.h: Add packed min/equal and sum of absolute differences.
1596         
1597         * cpu-x86.md: Same.
1598
1599         * mini-x86.c (mono_arch_output_basic_block): Same.
1600
1601         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
1602         extract mask, max, min and sum of absolute differences.
1603
1604         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
1605         method name.
1606
1607 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1608
1609         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
1610         Renamed one test for consistency.
1611
1612 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1613
1614         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
1615         fix to the code that deal with other blocks.
1616
1617 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1618
1619         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
1620
1621 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1622
1623         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
1624         that deals with vreg interference. Explicitly check for OP_LDADDR to be
1625         able to process the source reg.
1626
1627 2008-10-16  Martin Baulig  <martin@ximian.com>
1628
1629         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
1630
1631         * inssel.brg: Add `OP_HARD_NOP'.
1632
1633         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
1634
1635         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
1636         `OP_HARD_NOP' instruction when running inside the debugger.
1637
1638         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
1639         `OP_HARD_NOP' instruction when running inside the debugger.
1640
1641 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1642
1643         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
1644         now works. The issue with the regalloc tripping up no longer
1645         happens.
1646
1647         * simd-intrinsics.c (load_simd_vreg): Same.
1648
1649 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1650         
1651         * basic-simd.cs: Tests for new Vector8ui methods.
1652
1653 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1654
1655         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
1656         only for type. This fixes crashes where MonoInst::klass is checked
1657         for ops of type != VTYPE or OBJ.
1658
1659         * simd-intrinsics.c (load_simd_vreg): Same.
1660
1661 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1662
1663         * mini-ops.h: Add ops for packed shuffle/max/avg and
1664         extract mask.
1665         
1666         * cpu-x86.md: Same.
1667
1668         * mini-x86.c (mono_arch_output_basic_block): Same.
1669
1670         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
1671         extract mask.
1672
1673         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
1674         to emit extract mask op.
1675
1676         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
1677         to emit word shuffles.
1678
1679 2008-10-15  Mark Probst  <mark.probst@gmail.com>
1680
1681         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
1682         the largest alignment needed by a variable, but at least
1683         sizeof(gpointer).
1684
1685 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1686
1687         * basic-simd.cs: Tests for the fixes in the last commit.
1688
1689 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1690
1691         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
1692         no longer handles STACK_PTR input.
1693
1694         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
1695
1696         * simd-intrinsics.c (load_simd_vreg): New function that works like 
1697         get_simd_vreg   but handles STACK_PTR input.
1698
1699         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
1700         as the input can be an arbitrary pointer.
1701
1702         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
1703         LDADDR local optimization directly otherwise use a store op.
1704
1705 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1706
1707         * basic-simd.cs: Tests for dup low and dup high.
1708
1709 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1710
1711         * mini-ops.h: Add dup low and dup high ops.
1712         
1713         * cpu-x86.md: Same.
1714
1715         * mini-x86.c (mono_arch_output_basic_block): Same.
1716
1717         * simd-intrinsics.c (vector4f_intrinsics): Same.
1718
1719 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1720
1721         * basic-simd.cs: Tests for recently added functionality.
1722
1723 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1724
1725         * mini-ops.h: Add remaining sse1 fp ops.
1726         
1727         * cpu-x86.md: Add remaining sse1 fp ops.
1728
1729         * mini-x86.c (mono_arch_output_basic_block): Same.
1730
1731         * mini.h: Add enum for simd FP compare conditions.
1732
1733         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
1734
1735         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
1736         so the backed can generate the appropriate op.
1737
1738 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1739         This patch squeese one more byte from the SimdIntrinsc struct.
1740
1741         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
1742         a a shift amount intead of simply or'ing it.
1743
1744         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
1745
1746         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
1747         byte so we can have an aditional flags field without increasing struct size.
1748
1749         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
1750         against the simd_supported_versions bitmask.
1751
1752         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
1753
1754 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
1755
1756         * mini.c: remove rawbuffer code (the only use here is unsafe because
1757         it takes locks during signal handling and the kernel now provides much
1758         better info in proc/pid/smaps these days).
1759
1760 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
1761
1762         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
1763         OP_X86_PUSH_OBJ. Fixes #434620.
1764
1765         * objects.cs: Add a test.
1766         
1767 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
1768
1769         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
1770         that the packuswb/packusdw don't work with unsigned numbers for what
1771         would be negative numbers in signed format.
1772
1773         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
1774         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
1775
1776         * mini-ops.h: Add doubleword forms of many ops and packing ones.
1777
1778         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
1779
1780         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
1781
1782         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
1783
1784         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
1785         add more ops.
1786
1787         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
1788         version as the enum in mini.h.
1789
1790         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
1791         for sse3 ops, check the simd_version field if present. This way the code
1792         works with all versions of sse.
1793
1794 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1795
1796         * simd-intrinsics.c: Fixed intrinsic name typo.
1797
1798         * mini.h: Added missing simd exported function.
1799
1800         * basic-simd.cs: Added tests for Vector4ui.
1801         Fixed broken test for Vector16b.
1802
1803 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
1804
1805         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
1806         the max length to 64.
1807
1808 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1809
1810         * method-to-ir.c: Only do the fast virtual generic method call for
1811         non-wrapper methods.
1812
1813         * mini.h, mini-trampolines.c: The new generic virtual remoting
1814         trampoline handles virtual method calls via the vtable (as done by
1815         the fast virtual generic method calls) to remoting proxies.
1816
1817         * mini.c (mono_jit_create_remoting_trampoline): For generic
1818         methods reate a generic virtual remoting trampoline.
1819
1820         * mini-amd64.h: Enable fast virtual generic method calls again.
1821
1822 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1823
1824         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
1825         restore registers when doing tail calls.
1826
1827 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1828
1829         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
1830         Vector4ui.
1831
1832 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1833
1834         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
1835
1836 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1837
1838         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
1839
1840 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1841
1842         * basic-simd.cs: Retrofit for API changes.
1843
1844 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1845
1846         * mini-ppc.c: Handle integer stack arguments for tail calls.
1847
1848 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1849
1850         * optflags-def.h: Removed sse3 optimization.
1851
1852         * driver.c: Same.
1853
1854         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
1855         sse3.
1856
1857         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
1858
1859         * mini.h: Added enumeration with simd versions.
1860
1861         * simd-intrinsics.c (emit_intrinsics): Use the new static var
1862         for detecting SSE3.
1863
1864         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
1865
1866         * mini.c (mini_init): Call mono_simd_intrinsics_init.
1867
1868 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1869
1870         * basic-simd.cs: Added tests for Vector8u and Vector16u.
1871
1872         * basic-simd.cs: Fixed test naming.
1873
1874 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1875
1876         * mini-ops.h: Added ops for packed and saturated math, shifts
1877         and packing/unpacking.
1878
1879         * cpu-x86.md: Added descriptors for the above ops.
1880
1881         * mini-x86.c: Added code to emmit the above ops.
1882
1883         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
1884
1885 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
1886
1887         * aot-compiler.c (compile_method): Enable AOT for generic code.
1888
1889         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
1890
1891 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
1892
1893         * mini.c: add a workaround for a common screwup that ends up blamed
1894         to mono (other processes blocking signal delivery).
1895
1896 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1897
1898         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
1899         in the LDFLD/STFLD opcodes. Fixes #432673.
1900
1901         * iltests.il.in: Add a new test.
1902
1903 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
1904
1905         * mini-arm.c: attach the thread in unmanaged->managed transitions
1906         using delegates (bug #433148).
1907
1908 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1909
1910        * basic-simd.cs: Use new ShuffleSel constants.
1911
1912 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1913
1914         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
1915
1916         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
1917         only disable simd intrinsics if no sse2 is detected.
1918
1919         * optflags-def.h: Added sse3.
1920
1921         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
1922         is disabled.
1923
1924 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1925
1926         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
1927         when adding delegate-invoke wrappers.
1928
1929 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1930
1931         * Makefile.am: Reenable the simd tests.
1932
1933 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
1934
1935         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
1936           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
1937           other vreg is allocated to that hreg.
1938
1939         Contributed under MIT/X11 license.
1940
1941 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1942
1943         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
1944         yet checked in.
1945
1946 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1947
1948         * basic-simd.cs: New test suite for SIMD intrinsics.
1949
1950         * Makefile.am: Added new tests.
1951
1952 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1953
1954         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
1955
1956         * mini-ops.h: Same.
1957
1958         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
1959
1960         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
1961         using SSE2 aware opcodes.
1962
1963         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
1964         is enabled, this code path is only reachable if conversion ops are emmited after
1965         mono_method_to_ir.
1966
1967         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
1968
1969         This optimization saves 6 bytes per conversion against the old version.
1970
1971 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1972
1973         * aot-compiler.c (compile_method): Don't skip methods referencing 
1974         generic methods without a corresponding entry in token_info_hash, since
1975         encode_method_ref () can handle all generic methods now.
1976
1977         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
1978         generic context is set.
1979         
1980         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
1981         generic sharing of LDTOKEN.
1982
1983 2008-10-06  Mark Probst  <mark.probst@gmail.com>
1984
1985         * mini-amd64.h: Temporarily disabled fast virtual generic method
1986         calls because it breaks the System.Runtime.Remoting tests.
1987
1988 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1989
1990         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
1991
1992         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
1993         so inlining actually works.
1994         (check_inline_caller_method_name_limit): Ditto.
1995
1996 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
1997
1998         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
1999         64 bit safety (from Olaf Hering and Andreas Färber).
2000
2001 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
2002         
2003         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
2004         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
2005         unused virtual call support code.
2006
2007         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
2008         
2009         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
2010         which can't use aot trampolines.
2011         (decode_patch): Don't create aot trampolines for methods which can't use
2012         them.
2013
2014         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
2015         use aot trampolines.
2016
2017         * mini.h: Bump AOT image format version.
2018         
2019 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
2020
2021         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
2022         to save_token_info () since cmethod is inflated for constrained calls.
2023
2024         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
2025
2026 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
2027
2028         * Makefile.am: Add build rules for ppc64.
2029         This avoids the build failing at pedump with unresolved symbols
2030         due to lack of arch_sources. Instead it will now fail earlier
2031         due to lack of cpu-ppc64.md.
2032
2033         Contributed under MIT/X11 license.
2034
2035 2008-10-04  Mark Probst  <mark.probst@gmail.com>
2036
2037         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
2038         tail calls.
2039
2040         * iltests.il.in: Add test case for tail call with many arguments.
2041
2042 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
2043
2044         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
2045         to the fast virtual generic method code until the aot case is fixed.
2046
2047 2008-10-03  Mark Probst  <mark.probst@gmail.com>
2048
2049         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
2050
2051 2008-10-03  Mark Probst  <mark.probst@gmail.com>
2052
2053         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
2054         thunks.
2055
2056 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
2057         
2058         * simd-intrinsics.c: Forgot to add this one.
2059
2060         * mini-codegen.c: Fix macro in case SIMD is not supported.
2061
2062 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
2063         
2064         This patch land initial JIT support for simd intrinsics.
2065
2066         * mini-x86.h: Added new define to make --enable_minimal work on x86.
2067
2068         * Makefile.am: Added simd-intrinsics.c
2069
2070         * simd-intrinsics.c: New file with simd instrinsic related
2071         code.
2072
2073         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
2074
2075         * cpu-x86.md: Add simd related instructions.
2076
2077         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
2078
2079         * driver.c: Added two new --regression variants.
2080
2081         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
2082
2083         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
2084
2085         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
2086         extract some complicated logic to helper functions.
2087
2088         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
2089
2090         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
2091
2092         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
2093         the specialized simplification pass.
2094
2095         * method-to-ir.c (mono_spill_global_vars): Use new macro.
2096
2097         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
2098
2099         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
2100         table.
2101
2102         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
2103         if MONO_ARCH_NEED_SIMD_BANK is defined.
2104
2105         * mini-ops.h: Added the new simd ops.
2106
2107         * mini-x86.c: Added mono_arch_xregname.
2108
2109         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
2110
2111         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
2112
2113         * mini-x86.h: Define simd related MONO_ARCH macros.
2114
2115         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
2116
2117         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
2118
2119         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
2120         MONO_CLASS_IS_SIMD to deal with simd related IR.
2121
2122         * mini.h (MonoInst): Added spill_var to the backend union.
2123
2124         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
2125
2126         * mini.h: Added forward declarations of the new simd fuctions.
2127
2128         * optflags-def.h: Added new optimization names SIMD.
2129
2130         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
2131
2132         * regalloc.h: Added support for working with 3 register banks.
2133
2134         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
2135
2136         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
2137
2138 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
2139
2140         * mini-exceptions.c: remove 64 bit related ifdef clutter.
2141
2142 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
2143
2144         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
2145         instead of one on 64 bit systems.
2146
2147         * method-to-ir.c: Remove unused includes.
2148
2149 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
2150
2151         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
2152         cfg->used_int_regs, since the two are different on arm.
2153
2154 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2155
2156         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
2157         mono_method_get_vtable_index() to get the vtable index.
2158
2159 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2160
2161         * method-to-ir.c (mono_method_to_ir2): Don't create native
2162         wrappers for array methods, because they're never called (and if
2163         they were called they wouldn't work).
2164
2165 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2166
2167         * method-to-ir.c (mono_method_to_ir2): Array methods are
2168         special-cased and must not be invoked indirectly via the (M)RGCTX
2169         when generic sharing is turned on.  Fixes #431413.
2170
2171 2008-10-01  Mark Probst  <mark.probst@gmail.com>
2172
2173         * method-to-ir.c: When generic sharing is active, call
2174         non-interface virtual generic methods via the standard trampoline.
2175
2176         * mini-trampolines.c: Handle virtual generic shared methods.
2177
2178         * mini.h, mini-x86.c, mini-x86.h: New argument for
2179         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
2180         method thunks and which is the trampoline to call if the lookup
2181         fails.  Enable the virtual generic method thunk for x86.
2182
2183         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
2184         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
2185         argument but assert that it's NULL, because these archs don't yet
2186         implement the virtual generic method thunk.  Changes in the IMT
2187         thunk data structures.
2188
2189 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
2190
2191         * aot-compiler.c (emit_globals): Avoid invalid characters in
2192         the static linking symbol.
2193
2194         * objects.cs: Add a test for the range check optimization. Fix warnings.
2195
2196         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
2197         optimization from the current JIT.
2198
2199         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
2200         later in decompose_array_access_opts () to allow more optimizations.
2201
2202         * method-to-ir.c (mono_handle_soft_float): Rename this to 
2203         mono_decompose_soft_float () for consistency.
2204
2205         * mini-ops.h: Fix arguments of OP_STRLEN.
2206
2207         * method-to-ir.c (save_cast_details): Extract the cast details saving code
2208         into a separate function.
2209         (reset_cast_details): Ditto.
2210         (handle_unbox): Save cast details. Fixes #431254.
2211
2212         * method-to-ir.c: Remove some obsolete FIXMEs.
2213
2214 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2215
2216         * ir-emit.h (alloc_dreg): Write a warning before crashing.
2217
2218 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2219
2220         * mini-codegen.c: More work on macros to make them
2221         ready for multiple regbanks.
2222
2223 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2224
2225         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
2226
2227         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
2228
2229 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2230
2231         * mini-codegen.c (mono_spillvar_offset): Proper support for
2232         multiple regbanks.
2233
2234 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
2235
2236         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
2237         the stack overflow changes.
2238
2239 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2240
2241         * mini-codegen.c: Make all bank macros depend on reg_bank.
2242
2243         * mini-codegen.c (mono_local_regalloc): Make free mask
2244         initialization regbank aware.
2245
2246 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2247
2248         * mini-codegen.c (mono_local_regalloc): Extract callee
2249         mask selection to a function and make it regbank aware.
2250
2251 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2252
2253         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
2254         code to deal with many regbanks.
2255
2256 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
2257
2258         * mini-codegen.c: More fp->regbank changes.
2259
2260 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
2261
2262         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
2263         of a hardcoded constant.
2264
2265 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
2266
2267         * method-to-ir.c (type_from_stack_type): Fix typo.
2268
2269 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * mini-ia64.c (emit_move_return_value): Convert float return values to
2272         double.
2273
2274         * objects.cs: Add a new test.
2275         
2276         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
2277         VARARG methods to fix an assert later.
2278
2279         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
2280         end so it at least compiles.
2281
2282 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
2283
2284         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
2285
2286 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
2287
2288         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
2289         optimization to a new function (emit_optimized_ldloca_ir) and enable
2290         it for both ldloca and ldloca_s.
2291
2292 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
2293
2294         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
2295         gshared CASTCLASS code.
2296
2297         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
2298         amd64, where the libc stack unwinder encounters stack frames referring to
2299         native code in unmapped memory.
2300
2301         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
2302         sharing.
2303
2304         * generics.cs: Add new test.
2305
2306 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
2309         add a check that one of the ARM_FPU_ constants is defined.
2310
2311         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
2312         
2313         * mini-exceptions.c: Fix build on non-altstack platforms.
2314
2315         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
2316         sharing of vtypes.
2317
2318         * ir-emit.h: Add a comment to NEW_PCONST.
2319
2320         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
2321
2322         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
2323
2324         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
2325         after the changes to MonoJitDomainInfo.
2326
2327 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2328
2329         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
2330
2331 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2332
2333         * mini-ppc.c: Compiler warning fixes.
2334
2335 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2336
2337         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
2338         for pinvokes.
2339
2340 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2341
2342         * exceptions-ppc.c, mini-ppc.h: Compile
2343         mono_arch_handle_altstack_exception() on Darwin, too.
2344
2345 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2346
2347         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
2348         work on archs which don't have generic sharing implemented, only
2349         without the vtable_arg.
2350
2351 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2352
2353         * mini.c: Added comment explaining why delegate ctor icall
2354         wrappers are compiled.
2355
2356 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2357
2358         * mini.c: Don't produce trampolines to delegate ctor icall
2359         wrappers but compile them upfront.
2360
2361 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
2362
2363         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
2364         runtime-set function when going back to managed code. Currently this
2365         is used to set back the protection on the soft ovf pages and/or to
2366         throw the stack overflow exception that happened in unmanaged code.
2367
2368 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
2369
2370         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
2371         runtime-set function when going back to managed code. Currently this
2372         is used to set back the protection on the soft ovf pages and/or to
2373         throw the stack overflow exception that happened in unmanaged code.
2374
2375 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
2376
2377         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
2378         the support code for restoring stack protection after stack overflows
2379         that happen in unmanaged code. Don't set the exec permission on the
2380         soft overflow area.
2381
2382 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
2383
2384         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
2385         delegate->method_ptr is set. Fixes #428054.
2386
2387 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * tests.cs: Rename to ratests.cs.
2390
2391         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
2392         emit_get_rgctx_... functions.
2393
2394 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2395
2396         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
2397
2398 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2399
2400         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
2401         before asserting that method is sharable.
2402
2403 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2404
2405         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
2406         whether method needs a static RGCTX wrapper used instead of
2407         complex conditions.
2408
2409         * generic-sharing.c, mini.h: A few functions moved to
2410         metadata/generic-sharing.c.
2411
2412 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2413
2414         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
2415         Generic code sharing for value types, which essentially means
2416         treating value type methods like static methods.  The RGCTX is
2417         passed in the same way.
2418
2419 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2420
2421         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
2422         opcode when creating multi-dimensional arrays of open types.
2423
2424         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
2425         open generic types.
2426
2427         * generics.cs: Add a test.
2428
2429         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
2430
2431 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2432
2433         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
2434
2435         * mini.c (mini_method_compile): Set it when running under the debugger. 
2436
2437         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
2438         vreg optimization if the flag is set.
2439
2440         * driver.c (mono_main): Add --attach= option to pass options to
2441         the attach agent.
2442
2443         * mini.c (sigquit_signal_handler): Start the attach agent.
2444
2445         * ssapre.c: Disable this to save space since it is not yet ported to
2446         linear IR.
2447
2448         * regalloc2.c: Disable this to save space.
2449
2450         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
2451
2452 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
2453
2454         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
2455         the -v option useful again.
2456
2457 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * mini-amd64.c (mono_arch_output_basic_block): Add support for
2460         --break-at-bb.
2461
2462         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
2463         arrays of arrays. Fixes #428406.
2464
2465         * method-to-ir.c (mini_emit_castclass): Ditto.
2466
2467         * objects.cs: Add new test.
2468         
2469 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
2470
2471         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
2472         was wrong at it choked against target_type_is_incompatible for byref types.
2473
2474 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2475
2476         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
2477         places.
2478
2479 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
2480
2481         * mini-exceptions.c: update a few more exceptions-related counters.
2482
2483 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
2484
2485         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
2486         new functions to allocate from persistent mempools.
2487
2488 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2489
2490         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
2491         multiple register banks in the future.
2492
2493         * mini-codegen.c (mono_local_regalloc): Fix a warning.
2494
2495 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
2496
2497         * mini.c (type_to_eval_stack_type): Remove duplicated function.
2498
2499         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
2500
2501         * mini.h: Export type_to_eval_stack_type.
2502
2503         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
2504         is only ins->klass of byref types.
2505
2506 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
2507
2508         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
2509         (mini_emit_memcpy2): Ditto.
2510
2511         * mini-amd64.c: Fix a warning.
2512
2513 2008-09-21  Mark Probst  <mark.probst@gmail.com>
2514
2515         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
2516         linking.
2517
2518 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
2519
2520         * method-to-ir.c: Extract stloc micro-optimization to a
2521         function and apply it to all cases.
2522
2523 2008-09-19  Mark Probst  <mark.probst@gmail.com>
2524
2525         * method-to-ir.c: Don't fail generic code sharing in cases we
2526         already support.
2527
2528 2008-09-18  Mark Probst  <mark.probst@gmail.com>
2529
2530         * mini-ppc.c: Handle structs in tailcalls on Darwin.
2531
2532 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
2533
2534         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
2535         implementation.
2536
2537 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
2538
2539         * trace.c: make tracing more useful and correct, with per-thread
2540         id and indent info.
2541
2542 2008-09-15  Mark Probst  <mark.probst@gmail.com>
2543
2544         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
2545         doing a method call and the argument is an R4.
2546
2547 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
2548
2549         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
2550         generic methods.
2551
2552 2008-09-13  Mark Probst  <mark.probst@gmail.com>
2553
2554         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
2555
2556 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
2557
2558         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
2559         (MONO_JUMP_TABLE_FROM_INS): Ditto.
2560
2561 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2562
2563         * driver.c: Add a --agent argument (not supported yet) to load managed
2564         agent assemblies before loading the main assembly, similarly to how the
2565         Java VM handles agents.
2566
2567 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2568
2569         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
2570         function to do stack layout of local variables.
2571
2572 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2573
2574         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
2575         calculation.
2576
2577 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2578
2579         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
2580         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
2581         JIT if DISABLE_JIT is defined.
2582
2583         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
2584         defined.
2585
2586 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2587
2588         * iltests.il.in: Disable the fconv test on PPC (the result is
2589         undefined according to ECMA).
2590
2591 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2592
2593         * iltests.il.in: Enable tail call tests for PPC.
2594
2595         * mini.h: Add variable for storing incoming valuetype argument
2596         addresses for tail calls.
2597
2598         * mini-ppc.c: Implement valuetype arguments and return values for
2599         tailcalls on Linux.
2600
2601 2008-09-09  Mark Probst  <mark.probst@gmail.com>
2602
2603         * mini-ppc.c: Partially implement tail calls (struct arguments and
2604         return values not supported).
2605
2606         * method-to-ir.c: Enable tail calls on PPC.
2607
2608 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
2609
2610         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
2611         runtime-invoke wrappers to work around the problem of them getting
2612         assigned to a random class.
2613
2614         * aot-runtime.c (mono_aot_get_method): Ditto.
2615         
2616 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
2617
2618         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
2619         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
2620
2621 2008-09-07  Mark Probst  <mark.probst@gmail.com>
2622
2623         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
2624         until they're implemented properly.
2625
2626         * exceptions-ppc.c: Use arch-independent exception-handling code
2627         instead of custom one.
2628
2629         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
2630         for Linear IR.
2631
2632         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
2633
2634         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
2635         applies when __powerpc__ is defined.
2636
2637 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
2638
2639         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
2640         methods to their code to avoid computing the full name of wrappers and
2641         doing a lookup in a string hash table.
2642
2643 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2644
2645         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
2646         we identify bblocks before method_to_ir () is ran.
2647
2648         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
2649         Also avoid optimizing branches pointing to themselves.
2650
2651         * mini.c (mini_method_compile): Ditto. Fixes #422947.
2652
2653 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2654
2655         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
2656
2657 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2658
2659         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
2660         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
2661         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
2662         'buf'.
2663
2664         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
2665         jumped to the same entry in plt_jump_table.
2666
2667 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
2668
2669         * method-to-ir.c (initialize_array_data): Handle field with RVA from
2670         dynamic images.
2671
2672 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
2673
2674         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
2675         other assignment can be if converted. Saves 1.5% on corlib size and fixes
2676         #421807.
2677
2678 2008-08-29  Geoff Norton  <gnorton@novell.com>
2679
2680         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
2681         segment, and doesn't properly handle .space as .text.  Fixes
2682         AOT Mach/ARM
2683
2684 2008-08-29  Geoff Norton  <gnorton@novell.com>
2685
2686         * mini.c: Disable the mach exception handler when running on 
2687         ARM
2688
2689 2008-08-29  Geoff Norton  <gnorton@novell.com>
2690
2691         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
2692         globals on Darwin/ARM
2693
2694 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
2695
2696         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
2697         since too many things depend on it. Instead, call 
2698         mono_runtime_set_no_exec ().
2699         
2700         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
2701         the new JIT.
2702
2703         * aot-compiler.c: Add an 'asm-only' AOT option.
2704
2705         * mini.c: Avoid initializing the runtime when doing AOT compilation.
2706                 
2707         * aot-compiler.c (compile_method): Disable gshared support for now as it
2708         doesn't yet work.
2709
2710 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2711
2712         * mini-amd64.h : Fix a compiler warning.
2713
2714         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
2715           Changed to use a callback function to retrieve the unwind info.
2716           This avoids problems observed when code blocks were removed by
2717           unloading an app domain.
2718
2719         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
2720           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
2721           to work properly.
2722
2723         Contributed under MIT/X11 license.
2724
2725 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2726
2727         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
2728           case to keep the stack aligned to 8.
2729
2730         Contributed under MIT/X11 license.
2731
2732 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
2733
2734         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
2735         avoid repeated linear searches.
2736
2737 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
2738
2739         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
2740         methods it can't handle.
2741         
2742         * aot-compiler.c (add_method): Avoid adding a method twice.
2743         (add_wrappers): Add runtime invoke wrappers for all methods.
2744
2745         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
2746         function to create an aot-compatible version of this trampoline.
2747
2748         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
2749
2750 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
2751
2752         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
2753
2754         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
2755         with a generic sharing failure.
2756
2757         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
2758
2759         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
2760         CEE_RETHROW. Fixes #419634.
2761
2762         * mini.c (mono_method_to_ir): Ditto.
2763
2764         * exceptions.cs: Add a new test.
2765         
2766         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
2767         to mono_type_stack_size_internal () since some callers might not pass in
2768         an rgctx.
2769
2770         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
2771         instrument_prolog. Fixes #419878.
2772
2773         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
2774         doubles in soft float mode volatile.
2775
2776 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
2777
2778         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
2779
2780         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
2781         to handle soft float correctly.
2782
2783         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
2784         the fast path.
2785
2786         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
2787
2788         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
2789         to sp, since the generics catch code requires it.
2790
2791         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
2792         copying.
2793
2794         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
2795         mono_arch_emit_imt_argument ().
2796
2797         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
2798
2799         * mini-arm.c tramp-arm.c: Generic sharing updates.
2800
2801 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
2802
2803         * mini-arm.c: Fix the arm build.
2804
2805         * generic-sharing.c (mini_type_get_underlying_type): New helper function
2806         handling enums, generic instances and generic sharing.
2807         (mini_type_stack_size_full): Ditto.
2808
2809         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
2810         
2811         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
2812
2813         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
2814
2815         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
2816         trampolines.
2817
2818         * mini-arm.c: Various small generic sharing changes.
2819
2820         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
2821         this for x86.
2822         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
2823         custom code.
2824
2825         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
2826         helper function to return a generic class init trampoline.
2827
2828         * method-to-ir.c mini.c: Use it.
2829         
2830         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
2831         arch-specfic function to return a generic class init trampoline.
2832
2833         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
2834         the GENERIC_CLASS_INIT custom code.
2835
2836         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
2837         a fatal error, not a sharing failure.
2838
2839         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
2840         needed.
2841
2842         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
2843         trampoline argument from MONO_ARCH_VTABLE_REG.
2844
2845         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2846         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2847         argument, and pass the vtable in VTABLE_REG.
2848
2849         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2850         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2851         argument, and pass the vtable in VTABLE_REG.
2852         (mono_arch_create_trampoline_code_full): Remove some special casing for
2853         the rgctx fetch trampoline.
2854
2855         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
2856         Fixes #419273.
2857
2858         * iltests.il: Add a test for it.
2859
2860 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
2861
2862         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
2863
2864         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
2865         no longer needed.
2866
2867         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
2868         use mono_jit_info_table_find () to avoid recursion.
2869         (mono_delegate_trampoline): Add a sync wrapper here.
2870
2871         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
2872         here.
2873
2874         * mini.c (mono_method_to_ir): Ditto.
2875         
2876         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
2877         add_sync_wrapper argument. Don't add a sync wrapper here.
2878         (mono_create_jump_trampoline): Don't add a sync wrapper here.
2879
2880         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
2881         
2882 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2883
2884         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
2885           of nonvolatile registers back from MonoContext to CONTEXT.
2886
2887         Contributed under MIT/X11 license.
2888
2889 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2890
2891         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
2892           arguments on Winx64 there are only 4 argument registers.  For this
2893           logic to work the last argument must be pulled from the stack.  
2894
2895         Contributed under MIT/X11 license.
2896
2897 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2900
2901         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
2902         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
2903         encode/decode_method_ref ().
2904
2905         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
2906
2907         * aot-runtime.c (decode_patch): Ditto.  
2908
2909         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
2910         MONO_PATCH_INFO_METHOD.
2911
2912         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
2913         MonoGenericJitInfo.
2914
2915         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
2916         MonoGenericJitInfo.
2917
2918         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
2919
2920         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
2921         one from the caller.
2922
2923         * aot-runtime.c (decode_generic_inst): New function to decode and
2924         return a interned generic inst.
2925         (decode_klass_ref): Use it.
2926         (decode_method_ref): Ditto.
2927
2928         * aot-compiler.c (emit_exception_debug_info): Save 
2929         jinfo->has_generic_jit_info too.
2930
2931 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2932
2933         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
2934
2935         * iltests.il.in: Add a test for fconv_to_i.
2936
2937         * liveness.c: Disable the liveness2 pass for now to save space.
2938
2939         * regalloc2.c: Include mempool-internals.h to fix warnings.
2940
2941         * aot-compiler.c (encode_method_ref): Encode the context of generic
2942         instance methods.
2943
2944         * aot-runtime.c (decode_method_ref): Inflate generic methods using
2945         the context saved in the aot file.
2946
2947         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2948
2949         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2950
2951         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
2952         volatile so they won't be optimized away.
2953
2954 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2955
2956         * ssa.c:
2957         * ssa2.c:
2958         * mini.c:
2959         * regalloc2.c:
2960         * dominators.c: Remove duplicated functions that now are in
2961         mempool-internals.h.
2962
2963 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2964
2965         * aot-compiler.c: Fix warnings.
2966
2967         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
2968
2969         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
2970
2971         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
2972         as the patch type.
2973
2974         * mini.c (mono_resolve_patch_target): Ditto.
2975         
2976         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
2977         (encode_klass_ref): Add support for encoding VARs/MVARs.
2978
2979         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
2980
2981         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
2982         the handling of the got entries into a separate 'decode_got_entry' function.
2983         Add support for RGCTX_FETCH.
2984
2985         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
2986         clobbered by the trampoline code.
2987
2988         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
2989         not clobbered by the indirect calling code.
2990
2991 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2992
2993         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
2994         to fix the build.
2995
2996 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2997
2998         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
2999         signature using the compilation mempool otherwise we would leak it.
3000
3001 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
3002
3003         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
3004         mono_emit_abs_call ().
3005
3006         * patch-info.h: Add GENERIC_CLASS_INIT.
3007
3008         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
3009
3010         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
3011         as their target as a near call.
3012
3013         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
3014         ABS handling code.
3015         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
3016
3017         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
3018         call to a runtime function described by a patch.
3019
3020         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
3021         mono_emit_abs_call, this has the advantage that the ABS handling code in
3022         mono_codegen () can handle them both, and can handle other stuff in the
3023         future without additional code.
3024
3025         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
3026         entry.
3027         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
3028         abs addresses.
3029
3030         * mini.h: Add missing bblock related prototypes.
3031
3032         * mini.h (MonoCompile): Remove unused reverse_inst_list and
3033         reverse_inst_list_len fields.
3034
3035         * mini.c: Refactor this file a bit by moving branch optimizations to 
3036         branch-opts.c.
3037
3038         * method-to-ir.c: Merge generic sharing changes missed earlier.
3039
3040         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
3041
3042         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
3043         shared patches. Process METHODCONST as a shared patch.
3044
3045         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
3046         as it crashes on the 2.0 mscorlib.
3047
3048         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
3049         to cause crashes.
3050         
3051         * aot-compiler.c: Use is_plt_patch () in a few additional places.
3052         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
3053         by IMT.
3054
3055         * aot-compiler.c: Reorganize the got handling code to be a bit more
3056         understandable.
3057
3058 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
3061         mono_patch_info_equals/hash, and use it to massively simplify
3062         get_plt_index ().
3063
3064         * mini.c (mono_patch_info_hash): Simplify this and add support for
3065         more patch types.
3066
3067         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
3068
3069         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
3070         handling code, since an offset is not enough to identify a trampoline.
3071
3072         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
3073
3074 2008-08-17  Mark Probst  <mark.probst@gmail.com>
3075
3076         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
3077
3078         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
3079
3080         * mini-ops.h: Argument and result types for OVF_CARRY ops.
3081
3082         * decompose.c: PPC decompositions for various ops.
3083
3084         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
3085
3086 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
3087
3088         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
3089         call the generic trampoline code using a call, instead of a jump, to
3090         remove some special casing from the generic trampoline code.
3091
3092         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
3093         (mono_codegen): Ditto.
3094
3095         * aot-compiler.c aot-runtime.c: Ditto.
3096
3097         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
3098
3099         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
3100         helper function to find the offset corresponding to a lazy fetch trampoline.
3101
3102         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
3103         when doing generic sharing.
3104
3105         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
3106         places.
3107         
3108         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
3109         mini-trampolines.c to be with the other trampoline creation functions.
3110
3111         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
3112         as it is equal to method->signature in most cases, add a 
3113         mono_emit_method_call_full variant which takes a signature and an imt
3114         argument as well.
3115
3116 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
3117
3118         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
3119         to this function, since it could be computed easily from the method 
3120         argument.
3121         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
3122         more.
3123
3124         * method-to-ir.c mini.c: Remove references to 
3125         compile_generic_method_wo_context.
3126
3127         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
3128         generic method calls.
3129         
3130         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
3131         dimensional non-szarrays.
3132
3133         * mini.c (mini_init): Register mono_array_new_1.
3134
3135         * jit-icalls.c (mono_array_new_1): New jit icall.
3136
3137         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
3138         pointing to the method.
3139
3140         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
3141         method addresses belonging to METHOD_JUMP patches in the 
3142         jump_target_got_slot_hash.
3143         (mono_aot_load_method): Ditto.
3144
3145         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
3146         METHOD_JUMP patches.
3147
3148         * mini.c (mini_create_jit_domain_info): New helper function which 
3149         initializes/frees domain->runtime_info.
3150         (mini_free_jit_domain_info): Ditto.
3151         (mini_init): Install the domain hook functions with the runtime.
3152
3153         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
3154         information maintained by the JIT.
3155
3156         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
3157         insertion into jump_table_hash into mono_codegen (), also implement proper
3158         locking.
3159
3160         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
3161         tail calls, it is already done by the aot code.
3162         
3163         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
3164         mechanism on amd64.
3165
3166         * iltests.il.in: Make the jmp test a bit more complex.
3167
3168         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
3169         generic instances which doesn't have a token.
3170
3171         * aot-runtime.c (decode_method_ref): Ditto.
3172         
3173         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
3174         can handle this case now.
3175         (handle_box): Ditto.
3176
3177 2008-08-15  Geoff Norton  <gnorton@novell.com>
3178
3179         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
3180         debugging check.
3181
3182 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
3183
3184         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
3185         calling generic methods.
3186
3187         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
3188
3189         * aot-runtime.c (decode_patch_info): Ditto.
3190
3191         * mini.c (mono_resolve_patch_target): Ditto.
3192         
3193         * patch-info.h: Add METHOD_RGCTX.
3194
3195         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
3196
3197 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
3198
3199         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
3200         arguments in registers.
3201
3202         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
3203         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
3204
3205         * mini.c (mini_method_compile): Abort aot compilation for generic
3206         methods if generic sharing is disabled.
3207         
3208         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
3209         an mrgctx.
3210
3211         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
3212         requiring an mrgctx.
3213
3214         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
3215         store instructions when converting a vcall to a normal call.
3216
3217         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
3218         mono_arch_find_jit_info.
3219
3220 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
3221
3222         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
3223         avoid calling mono_method_full_name () for every method even if the
3224         env var is not set.
3225         (check_inline_caller_method_name_limit): Ditto.
3226
3227 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
3228
3229         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
3230         assemblies in one run.
3231
3232         * aot-compiler.c (mono_compile_assembly): Only print out a count of
3233         skipped methods if it is not 0.
3234
3235         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
3236
3237 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
3238
3239         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
3240           MONO_ARCH_HAVE_UNWIND_TABLE.
3241
3242         Contributed under MIT/X11 license.
3243
3244 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
3245
3246         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
3247           from default optimizaton list on Winx64.
3248
3249         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
3250
3251         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
3252           the LMF from the MonoJitTlsData structure.
3253
3254         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
3255
3256         Contributed under MIT/X11 license.
3257
3258 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * mini.c (sigsegv_signal_handler): Fix the build.
3261
3262         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
3263         assembly->aot_module.
3264
3265         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
3266         hash table. This simplifies and speeds up a lot of code, and fixes support
3267         for .netmodules.
3268
3269         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
3270         with the runtime.
3271
3272         * mini-exceptions.c: Ditto.
3273         
3274         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
3275         'native_offset' argument, since these are computed in the 
3276         mono_find_jit_info () function.
3277
3278         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
3279         is used by exceptions-ppc.c.
3280
3281         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
3282         mono_arch_find_jit_info ().
3283         
3284         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
3285         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
3286         generic code in mini-exceptions.c.
3287
3288 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
3289
3290         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
3291
3292         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
3293         
3294         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
3295         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
3296         called while holding the loader lock. Fixes #415608.
3297         (mono_aot_get_method_from_token_inner): Ditto.
3298
3299 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3300
3301         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
3302         to reduce differences between this and the generic implementation in
3303         mini-exceptions.c.
3304         (ves_icall_get_frame_info): Ditto.
3305
3306         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
3307
3308         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
3309         longer neccesarry.
3310
3311         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
3312         mono_arch_get_call_filter () and make it non-static, for consistency with the
3313         other architectures.
3314
3315 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
3316
3317         * mini.c:
3318         * local-propagation.c:
3319         * mini-x86.c: Correct the name of arch defines.
3320
3321 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3322
3323         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
3324         NO_EMULATE_LONG_SHIFT_OPS define.
3325
3326 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
3327
3328         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
3329         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
3330
3331         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
3332         MACH fixes. Merged from the 2.0 branch.
3333
3334         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
3335
3336         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
3337         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
3338
3339         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
3340
3341         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
3342         mono_marshal_get_native_wrapper () signature changes.
3343
3344 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3345
3346         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
3347         conversion bug under arm.
3348
3349 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
3350
3351         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
3352
3353         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
3354         with overflow checking.
3355
3356 2008-08-05  Marek Habersack  <mhabersack@novell.com>
3357
3358         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
3359         to the genmdesc.pl file
3360
3361 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
3362
3363         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
3364         arg_array in the soft-float versions of the LOAD/STORE macros.
3365
3366         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
3367         implementation.
3368
3369         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
3370
3371 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3372
3373         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
3374         a float HFA. Fixes #413621.
3375
3376 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
3377
3378         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
3379         frame_size to args_size. Fixes build.
3380
3381 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3382
3383         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
3384         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
3385
3386         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
3387         the stack are not unaligned. Fixes #413247.
3388         
3389 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3390
3391         * mini.c: update jitted methods performance counters.
3392
3393 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
3394
3395         * mini-exceptions.c: increase the exceptions thrown performance
3396         counter in mono_handle_exception ().
3397
3398 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
3399
3400         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
3401         can work with netmodules.
3402
3403 2008-07-28  Geoff Norton  <gnorton@novell.com>
3404
3405         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
3406         regression tests.
3407
3408 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3409
3410         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
3411         correct place.
3412
3413 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
3414
3415         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3416           The float param registers and other param registers must be the 
3417           same index on Windows x64.
3418
3419         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
3420           ArgValuetypeAddrInIReg argument case.  Setting the argument
3421           op to OP_VTARG_ADDR (OP_REGOFFSET)).
3422
3423         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
3424           variable computed above as the copy length for arguments of storage
3425           type ArgValuetypeAddrInIReg.
3426
3427         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
3428           ArgValuetypeAddrInIReg argument case.  This case will rely on
3429           mono_arch_emit_outarg_vt to emit the correct code later in the process.
3430
3431         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
3432           a 32 byte stack allocation for all calls.  We will omit the adjustment for
3433           jump and tail call instructoins as they do not follow the typical call behavior.
3434
3435         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
3436           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
3437           local variable and pass the local variable by reference to the called method.
3438
3439         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
3440           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
3441           of a struct is passed in a register it must be saved with the other
3442           volatile argument on the stack.
3443
3444         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
3445           frame pointer the stack adjustment value must be saved to the unwind 
3446           info structure.
3447
3448         Contributed under MIT/X11 license.
3449
3450 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3451
3452         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
3453         which got lost in the merge.
3454
3455 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3456
3457         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
3458         build.
3459
3460         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
3461         
3462         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
3463         icalls, since they won't be patched.
3464
3465         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
3466         different code sequence when running under valgrind to prevent some valgrind
3467         errors.
3468
3469         * iltests.il.in: Add new regression test.
3470
3471         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
3472         end with a throw.
3473
3474         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
3475         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
3476
3477         * iltests.il.in: Add new test.
3478
3479         * aot-compiler.c: Fix some warnings.
3480
3481         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
3482         Fixes #412494.
3483
3484 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3485
3486         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
3487         (mini_usage_jitdeveloper): Add a missing --wapi option.
3488
3489 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3490
3491         * mini-codegen.c: Simplify the is_fp macros.
3492         (free_up_ireg): Remove, use free_up_reg instead.
3493         (free_up_reg): Fix the fp case.
3494
3495 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3496
3497         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
3498         lowered earlier.
3499
3500         * exceptions-x86.c: Merge some changes which seemed to have got lost
3501         in the linear-ir merge.
3502
3503         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
3504
3505         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
3506         long vreg volatile even if the variable was already created.
3507
3508         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
3509         volatile variables.
3510
3511 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3512
3513         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
3514
3515         * mini.c (mono_jit_compile_method_inner): Add support for 
3516         MONO_EXCEPTION_BAD_IMAGE.
3517
3518         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
3519         mini_method_get_context () returns NULL. Fixes #356531.
3520
3521         * mini.c (mono_method_to_ir): Ditto.
3522         
3523         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
3524         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
3525
3526 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3527
3528         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
3529         in the LDFTN implementation.
3530
3531 2008-07-25  Mark Probst  <mark.probst@gmail.com>
3532
3533         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
3534         code, patch calls to icalls, too, even if they're not in the
3535         shared generic code hash.  Fixes #411962.
3536
3537 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3538
3539         * cpu-x86.md: Increase the length of the fcall opcodes.
3540
3541         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
3542         calls returning floats.
3543
3544         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
3545         on NEWARR.
3546         
3547         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
3548         missed earlier.
3549
3550         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
3551         into the domain->method_code_hash.
3552
3553         * aot-compiler.c: Fix win32 build.
3554
3555         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
3556         
3557         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
3558         gshared NEWARR implementation.
3559
3560         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
3561
3562         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
3563         can be used outside of method_to_ir.
3564
3565         * mini.h (MonoCompile): Add arg_types field.
3566
3567         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
3568         
3569         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
3570         the values of the local arg_array and param_types array.
3571
3572 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3573
3574         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
3575         got accesses might only get generated later when NEWOBJ is decomposed.
3576         
3577         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
3578         looking up the native code of the target method when a delegate is called
3579         for the first time.
3580
3581         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
3582         optimization.
3583
3584         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
3585
3586         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
3587         AOT work on platforms without a working dlsym implementation.
3588
3589         * mini.h: Bump AOT image format version.
3590         
3591 2008-07-24  Mark Probst  <mark.probst@gmail.com>
3592
3593         * mini-exceptions.c: Free a MonoType with
3594         mono_metadata_free_type() instead of g_free().
3595
3596         * aot-runtime.c: Free a MonoType.
3597
3598 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3599
3600         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
3601         optimization.
3602
3603         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
3604         fp stack on x86.
3605
3606 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
3607         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
3608         profiler hook.
3609
3610 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3611
3612         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
3613         NEWOBJ calls on valuetypes.
3614
3615         * iltests.il.in: Add new test.
3616
3617         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
3618
3619 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3620
3621         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
3622         is no longer needed.
3623
3624         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
3625         non register sized integer arguments.
3626         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
3627         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
3628         emit_memcpy2 ().
3629
3630         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
3631         CEE_MONO_RETOBJ.
3632         
3633         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
3634         two a binop with different sized arguments is emitted.
3635
3636         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
3637         instruction in the ins==NULL case.
3638
3639 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3640
3641         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
3642
3643         * mini-x86.c: Fix osx build.
3644
3645         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
3646         opcodes as well.
3647
3648         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
3649         instruction for non int sized variables.
3650
3651         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
3652         implementation.
3653
3654 2008-07-23  Robert Jordan  <robertj@gmx.net>
3655
3656         * method-to-ir.c: Fix MSVC build.
3657
3658 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3659
3660         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
3661         a non int sized type, widen it to an int since newer versions of gcc seem to
3662         generate code which needs this.
3663
3664         * ssa2.c abcremoval2.c: Fix warnings.
3665
3666         * *: Merge the Linear IR branch.
3667
3668         The original branch is at trunk/branches/vargaz/mini-linear-il, and
3669         the ChangeLog file there describes all the changes done over the years. 
3670         Further documentation can be found at www.mono-project.com/Linear_IL.
3671
3672 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3673
3674         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3675           The float param registers and other param registers must be the 
3676           same index on Windows x64.
3677
3678         Contributed under MIT/X11 license.
3679
3680 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
3681
3682         * mini.c: Make the previous fix GC safe.
3683
3684 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
3685
3686         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
3687
3688 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3689
3690         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
3691           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
3692           ArgValuetypeAddrInIReg instead.
3693
3694         Contributed under MIT/X11 license.
3695
3696 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
3697
3698         * mini-codegen.c (get_register_spilling): Fix a warning.
3699
3700 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
3701
3702         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
3703         for types which the initialization fails. Raises the provided exception
3704         at the right stop after cleanup.
3705
3706 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
3707
3708         * aot-compiler.c: Free most of the memory allocated during compilation.
3709
3710         * mini.c (mini_parse_debug_options): Fix a leak.
3711         
3712         * mini.c (mini_method_compile): Don't add the method to the jit info tables
3713         during aot compilation.
3714
3715 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
3716
3717         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
3718         it has too much register pressure.
3719
3720 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
3721
3722         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
3723
3724 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3725
3726         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3727         on x86.
3728
3729         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3730         on amd64 similar to the way it is done on arm.
3731
3732         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3733
3734         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
3735         consistency, normalize error messages, avoid loading aot-only modules in
3736         normal mode.
3737
3738         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
3739         for consistency.
3740
3741         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
3742
3743 2008-07-11  Martin Baulig  <martin@ximian.com>
3744
3745         * debug-debugger.h
3746         (MonoDebuggerInfo): Add `interruption_request'.
3747
3748 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3749
3750         * aot-compiler.c (emit_plt): Remove some dead code.
3751
3752         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
3753
3754         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
3755         return the plt info offset belonging to a given plt entry.
3756
3757         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
3758         mono_aot_get_plt_info_offset.
3759         
3760         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
3761         similar to the amd64 code by makeing jumps through a separate jump table 
3762         instead of embedding the jump addresses into the code.
3763
3764 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
3765
3766         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
3767         method.
3768
3769 2008-07-10  Martin Baulig  <martin@ximian.com>
3770
3771         * mini.c (mini_method_compile): Disable generics sharing when
3772         running in the debugger.
3773
3774 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3775
3776         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
3777
3778         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
3779         the local register allocator from running out of registers on x86 when 
3780         using aot.
3781
3782 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
3783
3784         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
3785         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
3786         C4146.
3787
3788         Contributed under MIT/X11 license.
3789
3790 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3791
3792         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
3793         speed up the assembler.
3794
3795 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3796
3797         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
3798         support.
3799
3800         * mini.c: Move the soft float handling macros a bit earlier, add 
3801         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
3802         place.
3803
3804         * mini.h: Add prototype for mono_arch_fixup_jinfo.
3805
3806         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
3807         read-only to help catch code allocation requests.
3808         
3809         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
3810         and turn it off when using --aot-only or when compiling with --aot=full.
3811
3812         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
3813         jump table for switches from the normal domain mempool, not the code
3814         manager.
3815
3816         * mini-trampolines.c (get_unbox_trampoline): New function to return an
3817         unbox trampoline which handles aot-only mode too.
3818
3819         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
3820         an AOTed unbox trampoline.
3821
3822         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
3823
3824 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3825
3826         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
3827         ""
3828
3829         Contributed under MIT/X11 license.
3830
3831 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3832
3833         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
3834           the unwind information for the method at the end of the allocated block.
3835           
3836         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
3837           MonoCompileArch to hold the unwind info for SEH on Winx64
3838         
3839         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
3840           frame pointer info for the method being compiled.
3841           
3842         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
3843           the call to mono_exception_from_token.
3844           
3845         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
3846           storing the method prolog information in a format that the Winx64 SEH can understand.  This
3847           information is stored a the end of the method block because it is all 32-bit offset based.
3848
3849         Contributed under MIT/X11 license.
3850
3851 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3852
3853         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
3854
3855         * wapihandles.c: Fix warnings.
3856
3857         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
3858         mode.
3859
3860         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
3861         mono_jit_compile_method in aot-only mode since that calls the type 
3862         initializer.
3863         
3864         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
3865         get_delegate_invoke_impl in aot-only mode.
3866
3867         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
3868
3869 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
3870
3871         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
3872
3873         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
3874         is on by default.
3875
3876         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
3877
3878         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
3879         init trampoline from the AOT file as well.
3880
3881         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
3882         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
3883         code.
3884
3885         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
3886         mono_init.
3887
3888         * exceptions-amd64.c: Add _full variants for the remaining exception code
3889         creation functions as well, allow emission of relocatable code, remove
3890         caching since that is now done by the caller.
3891
3892         * mini-exceptions.c: Add _full variants for the remaining exception code
3893         creation functions as well, add aot-only support.
3894
3895         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
3896         if we can determine a proper token for them.
3897         (add_wrappers): Add a few more wrappers.
3898         (emit_method_code): Remove some dead code.
3899         (emit_trampolines): Emit exception code too.
3900
3901         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
3902
3903         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
3904         mono_array_new_va which avoids varargs.
3905
3906         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
3907
3908         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
3909         mono_arch_create_specific_trampoline () in all places.
3910
3911         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
3912         a bit so it can be used for other things as well.
3913         
3914         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
3915         on demand as well.
3916
3917         * exceptions-amd64.c: Rename the caching from the exception code creation
3918         functions, it is done by the caller instead.
3919         
3920         * exceptions-amd64.c: Change the signature of the exception code creation 
3921         functions to allow the creation of relocatable code later.
3922
3923         * mini-exceptions.c: Add a set of functions to query the various 
3924         runtime-generated exception functions.
3925
3926         * mini.c mini-exceptions.c: Use the newly added functions instead of the
3927         mono_arch_.. () functions.
3928         
3929 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3930
3931         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
3932
3933         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
3934
3935         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
3936         (mini_get_vtable_trampoline): Ditto.
3937
3938         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
3939         code in the AOT case by returning the code size and a list of relocations to
3940         the caller.
3941
3942         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
3943
3944 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
3945
3946         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
3947           clean the stack.
3948
3949         Contributed under MIT/X11 license.
3950
3951 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3952
3953         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
3954         so the buffer size can be computed correctly. Fixes #404735.
3955
3956         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
3957         normally as cfg->debug_info is already freed.
3958
3959 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
3960
3961         * mini-amd64.c: For calls returning vtypes in registers, don't store
3962         the return address on the stack, instead allocate a separate local for
3963         it. Fixes #404729.
3964
3965 2008-07-05  Mark Probst  <mark.probst@gmail.com>
3966
3967         * mini-trampolines.c, mini.h: Add an argument to
3968         mono_create_jit_trampoline_in_domain() for turning off the adding
3969         of the sync wrapper.
3970
3971         * mini.c: Use the JIT trampoline without sync instead of
3972         ldftn_nosync in static RGCTX invoke wrappers so that the call can
3973         be patched.
3974
3975 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3976
3977         * driver.c: Turn on GSHARED optimization by default.
3978
3979 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
3980
3981         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
3982         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
3983
3984         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
3985         create a variant of the generic trampoline code callable from AOTed trampolines.
3986
3987         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
3988         trampoline code callable from AOTed trampolines.
3989
3990         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
3991
3992 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3993
3994         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
3995         pass-through manner.
3996
3997         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
3998         and don't fail sharing for them anymore.
3999
4000         * mini-exceptions.c: Handle exceptions in shared generic methods.
4001
4002         * generic-sharing.c: When checking the context of a generic
4003         method, also check its class's context.  Don't treat wrappers as
4004         sharable.
4005
4006         * mini-trampolines.c: Some code factored out to
4007         metadata/generic-sharing.c.  Handle the MRGCTX case.
4008
4009         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
4010         we must deal with the method being of another instantiation of the
4011         class.  Add static rgctx invoke wrappers to generic methods.
4012
4013 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4014
4015         * mini.c: Provide all jit infos of generic shared methods with a
4016         generic jit info.
4017
4018         * mini-exceptions.c: Handle the new situation that a generic info
4019         might be available, but not info about the this/vtable/mrgctx
4020         variable.
4021
4022 2008-07-03  Mark Probst  <mark.probst@gmail.com>
4023
4024         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
4025         generic methods.
4026
4027 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
4028
4029         * dominators.c (check_dominance_frontier): Fix a warning.
4030
4031         * mini.h: Add some missing prototypes.
4032
4033         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
4034
4035         * driver.c (mono_jit_init_version): Correct the comments since the first
4036         argument should be the name of the root domain, not a filename.
4037
4038         * aot-runtime.c (make_writable): Error out if this is called while running
4039         with --aot-only.
4040         (load_aot_module): Ditto.
4041
4042         * aot-compiler.c: Really fix the computation of method indexes.
4043
4044         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
4045         optimizations as this is no longer called frequently.
4046
4047         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
4048         method and the invoke impl code and pass it to the delegate trampoline instead of
4049         just the delegate class.
4050
4051 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4052
4053         * aot-compiler.c: Fixup the computation of method indexes.
4054         (add_wrappers): Create the base methods of the runtime invoke wrappers using
4055         the method builder infrastructure.
4056
4057         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
4058         has no header.
4059
4060         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
4061         mode, load the method right away instead of creating a trampoline.
4062
4063         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
4064
4065         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
4066         some checks a bit.
4067
4068 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4069
4070         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
4071         (mono_aot_load_method): Use method_index instead of method->token.
4072
4073         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
4074         can handle icalls etc. properly.
4075
4076         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4077
4078         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
4079
4080         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
4081         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
4082         JIT_ICALL_ADDR patch type.
4083
4084         * patch-info.h: Add JIT_ICALL_ADDR patch type.
4085
4086         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
4087         request flag.
4088         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
4089
4090         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
4091
4092 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4093
4094         * mini.c: Use domain->jit_code_hash_lock for controlling access to
4095         domain->jit_code_hash.
4096
4097 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
4098
4099         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
4100
4101 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
4102
4103         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
4104         get_this_arg_from_call, let it compute it when needed.
4105
4106         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
4107         gsctx from code only when needed.
4108
4109         * mini-trampolines.c (get_generic_context): Rename this to 
4110         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
4111         it can be called by the arch backends.
4112
4113         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
4114
4115 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
4116
4117         * driver.c (mono_main): Add experimental --aot-only command line option.
4118
4119         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
4120         set.
4121
4122 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4123
4124         * driver.c (DllMain): Remove mono_module_handle.
4125
4126         Contributed under MIT/X11 license.
4127
4128 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
4129
4130         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
4131         for emitting methods which are not in the source assembly. Detect and report
4132         failure of assembling+linking.
4133         
4134         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
4135
4136         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
4137
4138 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
4139
4140         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
4141
4142 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
4143
4144         * mini.h: Remove some obsolete prototypes.
4145
4146         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
4147
4148 2008-06-24  Mark Probst  <mark.probst@gmail.com>
4149
4150         * mini.c (get_object_generic_inst): Variable-sized arrays are not
4151         supported by Visual Studio, so use alloca().
4152
4153 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
4156         Fixes #402585.
4157
4158 2008-06-23  Mark Probst  <mark.probst@gmail.com>
4159
4160         * mini.c: Fail sharing of a generic method if it contains an open
4161         catch clause (because we don't pass MRGCTXs yet).
4162
4163 2008-06-23  Mark Probst  <mark.probst@gmail.com>
4164
4165         * mini.c: When compiling a method with generic sharing, insert the
4166         method instantiated with an all-Object generic context into the
4167         jit info table, instead of the context of the first instantiation
4168         of the method we happen to compile.
4169
4170 2008-06-18  Martin Baulig  <martin@ximian.com>
4171
4172         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
4173         `major_version' and `minor_version'.
4174
4175 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4176
4177         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
4178         mono_method_is_generic_sharable_impl() takes an additional
4179         argument specifying whether to treat type variables as reference
4180         types.
4181
4182 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4183
4184         * mini.h: Removed obsolete prototypes.
4185
4186 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4187
4188         * mini.c: Don't fail generic sharing for initobj and sizeof - we
4189         already handle them.
4190
4191 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4192
4193         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
4194         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
4195         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
4196         tramp-x86.c: Added a MonoGenericContext* argument to
4197         mono_arch_get_unbox_trampoline() so that it can call other
4198         functions which require it.
4199
4200 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4201
4202         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
4203         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
4204         mono_arch_get_this_arg_from_call() takes a
4205         MonoGenericSharingContext* as well.
4206
4207 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4208
4209         * mini.c: Factor out code for emitting unbox into emit_unbox() and
4210         implement generic sharing of unbox.
4211
4212 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4213
4214         * mini.c: Don't compute the vtable to determine whether a field is
4215         special static, because it might not work for open types.
4216
4217 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4218
4219         * mini.c: Removed the unused token_type and token_source arguments
4220         from get_runtime_generic_context_ptr().
4221
4222 2008-06-17  Marek Habersack  <mhabersack@novell.com>
4223
4224         * mini.c (ADD_BINOP): fix the build
4225
4226 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
4227
4228         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
4229         a widening op.
4230
4231 2008-06-16  Mark Probst  <mark.probst@gmail.com>
4232
4233         * mini.h: Removed class relations enum that's not used anymore.
4234
4235 2008-06-16  Mark Probst  <mark.probst@gmail.com>
4236
4237         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
4238
4239         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
4240         the lazy fetch trampoline access code.
4241
4242 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
4243
4244         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
4245
4246 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
4247
4248         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
4249
4250         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
4251
4252         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
4253
4254 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4255
4256         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
4257         intrinsics.
4258
4259         * mini-ops.h: Add MIN/MAX_UN opcodes.
4260
4261         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
4262         intrinsics.
4263
4264         * basic-math.cs: Add more min/max tests.
4265
4266         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
4267
4268 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4269
4270         * mini.c: Small fix in the prologue of emit_castclass.
4271
4272 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4273
4274         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
4275
4276         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
4277         do not work even for unsigned types. Fixes #400014.
4278
4279         * basic-math.cs: Add regression tests for unsigned Min/Max.
4280
4281 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4282
4283         * mini.c: Added additional context_used argument to several
4284         functions, which will be needed for sharing generic methods.  Use
4285         GET_RGCTX macro wherever appropriate.  Declare only one
4286         context_used in mono_method_to_ir().
4287
4288 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4289
4290         * mini.c, generic-sharing.c: Removed generic class relations.
4291
4292         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
4293         functions due to MRGCTX changes.
4294
4295 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4296
4297         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
4298         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
4299         with calculated IMT.
4300
4301         * mini.c: Generic sharing of calls via generic interfaces.
4302
4303         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
4304         generic method with non-constant MonoGenericContext*.  Instead,
4305         the context is taken out of the method itself.
4306
4307 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4308
4309         * mini.c: Generic sharing of ldvirtftn.
4310
4311 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4312
4313         * mini.c: Generic sharing of ldftn.
4314
4315 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4316
4317         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
4318
4319 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4320
4321         * mini.c: Generic sharing of the special case of ldtoken followed
4322         by a call to GetTypeFromHandle.
4323
4324 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4325
4326         * mini.c: Generic sharing of box for nullable types.
4327
4328 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4329
4330         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
4331         are passed on the stack. Fixes #324807.
4332
4333 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
4334
4335         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
4336         for the ArgValuetypeAddrInIReg case.
4337
4338         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
4339         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
4340
4341         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
4342         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
4343         local variable and pass the local variable by reference to the called method.
4344           
4345         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
4346         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
4347
4348         Contributed under MIT/X11 license.
4349
4350 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
4351
4352         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
4353
4354         * debug-mini.c (mono_debug_print_vars): Release memory after printing
4355         everything.
4356
4357 2008-06-10  Martin Baulig  <martin@ximian.com>
4358
4359         * debug-mini.c
4360         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
4361
4362 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
4363
4364         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
4365         possible error when no arguments are passed.
4366
4367         Contributed under MIT/X11 license.
4368
4369 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
4370
4371         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
4372         where the file name is NULL.
4373
4374 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * mini.c: Fix s390 build.
4377
4378 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
4379
4380         * trace.c (mono_trace_parse_options): Fix warnings.
4381
4382         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
4383
4384 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
4385
4386         * mini.c (remove_block_if_useless): Avoid printing the method name.
4387         
4388         * mini.c: Remove needless setting of ins->cil_code which is now done by 
4389         MONO_INST_NEW.
4390
4391         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
4392         LMF. Not yet used.
4393
4394         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
4395         translated code after it has been patched.
4396
4397 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
4398
4399         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
4400         avoid problems during code patching on SMP systems.
4401         (emit_call): Avoid adding a patch info which is already added by 
4402         emit_call_body.
4403         (mono_arch_emit_exceptions): Ditto.
4404
4405 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
4406
4407         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
4408         MONO_TYPE_ISSTRUCT already checks for it.
4409
4410 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
4411
4412         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
4413           structs with floats on Winx64 the float registers are not used.  
4414           The integer registers are always used..
4415         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
4416           only one register will be used and only if the size of the struct 
4417           is 1,2,4, or 8 bytes.
4418
4419         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
4420           to work for Winx64.
4421
4422         Contributed under MIT/X11 license.
4423
4424 2008-06-05  Martin Baulig  <martin@ximian.com>
4425
4426         * debug-debugger.c (debugger_lookup_class): Also call
4427         mono_class_setup_methods() here; we're only called from RTI.
4428
4429 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
4430
4431         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
4432         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
4433         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
4434         Post-process object files and add dtrace-generated object, if necessary.
4435
4436         Contributed under MIT/X11 license.
4437
4438 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4439
4440         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
4441         element class.
4442
4443         * mini.c: Generic sharing for unbox.any and castclass.
4444
4445 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4446
4447         * mini.c: Ignore tailcall prefix in shared generic code and when
4448         doing calls which require a vtable/rgctx argument.
4449
4450 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4451
4452         * mini.c: Don't free the JIT info.
4453
4454         * driver.c: Changes in the JIT info table testing code.
4455
4456 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
4457
4458         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
4459         interruption. Fix some warnings.
4460
4461         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
4462         interruption_checkpoint.
4463
4464 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
4465
4466         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
4467         from embedding applications.
4468
4469 2008-06-02  William Holmes  <billholmes54@gmail.com>
4470
4471         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
4472           reserving 32 bytes on the stack when making calls. 
4473
4474         Contributed under MIT/X11 license.
4475
4476 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
4477
4478         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
4479         the linear IL branch.
4480
4481         * driver.c: Print out more information for --version on arm.
4482
4483 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
4484
4485         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
4486         bb_exit instead, since out of line bblocks might not actually be emitted
4487         out-of-line.
4488         
4489         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
4490         maximum epilog size for out of line bblocks if tracing is enabled.
4491
4492         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
4493
4494 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
4495
4496         * arrays.cs: Regression tests for allocating arrays with negative sizes.
4497
4498 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
4499
4500         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
4501         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
4502         opcodes.
4503
4504 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
4505
4506         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
4507         the 'value' to store is a constant.
4508
4509         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
4510
4511         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
4512         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
4513
4514 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
4515
4516         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
4517         for accessing method->generic_container.
4518
4519 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
4520
4521         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
4522         
4523         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
4524
4525         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
4526
4527         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
4528         fails.
4529
4530 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
4531
4532         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
4533
4534         * mini.c: Handle the case when mono_class_vtable () fails.
4535
4536 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
4537         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
4538         the stat profiler.
4539
4540 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4541
4542         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
4543         together with domain sharing.
4544
4545 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4546
4547         * mini.c: Treat callvirts to final methods like non-virtual calls
4548         when doing generic sharing, i.e. look them up in the runtime
4549         generic context.
4550
4551 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4552
4553         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
4554         with computed types (for generic sharing).
4555
4556         * mini.c: Generic sharing for mkrefany and refanyval.
4557
4558 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
4559
4560         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
4561         possible.
4562
4563         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
4564         the generic sharing code.
4565         
4566         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
4567         when needed.
4568
4569 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4570
4571         * mini.h: Remove the declaration of mono_aot_init_vtable ().
4572
4573 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
4574
4575         * driver.c: updated copyright date
4576
4577 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4578
4579         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
4580         needed.
4581
4582 2008-05-19  Martin Baulig  <martin@ximian.com>
4583
4584         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
4585         pointing to the new `_mono_debug_using_mono_debugger' variable.
4586
4587         * driver.c
4588         (mono_main): Check mono_debug_using_mono_debugger() rather than
4589         the `MONO_INSIDE_MDB' environment variable to check whether we're
4590         inside the debugger.
4591
4592 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
4593
4594         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
4595         argument.
4596
4597 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4598
4599         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
4600
4601         * mini.c: Added mini_assembly_can_skip_verification. This
4602         function checks if the assembly requested to skip verification. 
4603         Fixes part of #387274.
4604
4605 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
4606
4607         * mini.c (mini_get_method): Disable the check for open generic classes when
4608         using generic sharing.
4609
4610         * generics.cs: Add a test for #387034.
4611
4612         * mini.c (mini_get_method): Check whenever the method class is an open generic
4613         type, and return NULL in that case, causing a verification error. Fixes
4614         #384123.
4615
4616 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4617
4618         * driver.c (mono_main): Revert r102623. The right
4619         thing to do is to enable the verifier under verifiable
4620         unless a --security flag was passed.
4621
4622         We need this non-trivial behavior for --verify-all otherwise
4623         mcs-compileall won't be able to use it. As it needs everything to
4624         be verified under validil.
4625
4626 2008-05-06  Martin Baulig  <martin@ximian.com>
4627
4628         Fix #383749.
4629
4630         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
4631         (mono_debugger_thread_cleanup): Likewise.
4632         (mono_debugger_extended_notification): Likewise.
4633
4634 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4635
4636         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
4637         against both inflated and non-inflated methods. We need to check against the
4638         generic definition for cases where the instantiated method is not visible.
4639         We need to check against the inflated types for cases where the instantiation
4640         changes any super type. This fixes #382986.
4641
4642         Note that this doesn't need to be applied to other parts of mono_method_to_ir
4643         that check for visibiliy as generic params only appears as the type subject
4644         of tokens on call opcodes. Field manipulation and ldftn must always
4645         target an exact type.
4646
4647 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4648
4649         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
4650         if no related --security flag is passed.
4651
4652 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4653
4654         * mini-arch.h: Prepare support for ppc64.
4655
4656         Contributed under MIT/X11 license.
4657
4658 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4659
4660         * aot-runtime.c: Prepare support for ppc64.
4661
4662         Contributed under MIT/X11 license.
4663
4664 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4665
4666         * mini-ops.h: Prepare support for ppc64.
4667
4668         Contributed under MIT/X11 license.
4669
4670 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
4671
4672         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
4673
4674         Contributed under MIT/X11 license.
4675
4676 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
4677
4678         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
4679         assemblies, since aot_name is not a full path, causing us to load MS.NET 
4680         assemblies on windows.
4681
4682 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
4683
4684         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
4685         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
4686         * main.c: Use UTF-8 encoded command line instead of Windows default code
4687         page on Windows to support Unicode.
4688         * driver.c (DllMain): New function for mixed-mode assembly support.
4689         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
4690         export __stdcall functions without decoration.
4691
4692         Contributed under MIT/X11 license.
4693
4694 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4695
4696         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
4697         saving it very early.
4698
4699 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4700
4701         * mini.h, mini.c: Lots of code for accessing the old RGCTX
4702         deleted.  The only way to access the new RGCTX is via the
4703         trampline.
4704
4705         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
4706         vtable instead of the RGCTX to static methods.
4707
4708         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
4709         accessing the new RGCTX.
4710
4711         * generic-sharing.c: There is no separation between self, type
4712         arguments and other types in the RGCTX anymore.
4713
4714 2008-04-25  Jonathan Chambers <joncham@gmail.com>
4715
4716         * mini-amd64.c (add_general): Remove previous stack adjustment.
4717         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
4718         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
4719         for 32 bytes of stack space reserved for all calls.
4720         
4721         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
4722         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
4723         adjustment.
4724         
4725         Code contributed under MIT/X11 license.
4726
4727 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
4728
4729         * mini.c (mini_method_verify): Only verify non-inflated methods, check
4730         against the root definition, peeling out method and type instantiations.
4731         Cache verify success results, code that fails verification is still
4732         checked multiple times.
4733
4734 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
4735
4736         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
4737
4738 2008-04-23  Jonathan Chambers <joncham@gmail.com>
4739
4740         * mini-amd64.c (add_general): Always increment stack on Win64.
4741         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
4742         on Win64.
4743         
4744         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
4745         stack based argument handling on Win64.
4746         
4747         Code contributed under MIT/X11 license.
4748
4749 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
4750
4751         * Makefile.am (version.h): Add support for git-svn.
4752
4753 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
4754
4755         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
4756         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
4757         avoiding allocations and libc functions which might deadlock.
4758         
4759         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
4760         'no-gdb-backtrace' option is set.
4761
4762         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
4763
4764         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
4765
4766 2008-04-21  Martin Baulig  <martin@ximian.com>
4767
4768         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
4769         and `get_lmf_addr'; `notification_address' is no longer a pointer.
4770
4771 2008-04-21  Martin Baulig  <martin@ximian.com>
4772
4773         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
4774         `thread_vtable', `event_handler_ptr' and `event_handler'.
4775
4776 2008-04-21  Martin Baulig  <martin@ximian.com>
4777
4778         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
4779         allows delayed initialization of the `executable_code_buffer' when
4780         attaching.
4781
4782 2008-04-21  Martin Baulig  <martin@ximian.com>
4783
4784         * mini.h (mono_debugger_create_notification_function): Removed.
4785         * tramp-*.c (mono_debugger_create_notification_function): Removed.
4786
4787         * mdb-debug-info64.s
4788         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4789
4790         * mdb-debug-info32.s
4791         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4792
4793         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
4794         currently only works on x86 and x86_64, so don't create it on ppc.
4795
4796 2008-04-21  Martin Baulig  <martin@ximian.com>
4797
4798         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
4799
4800         * mini.c
4801         (mini_method_compile): In the fp elimination check, check
4802         `debug_options.mdb_optimizations' in addition to
4803         mono_debug_using_mono_debugger().       
4804
4805         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
4806         disable some JIT optimizations which are only disabled when
4807         running inside the debugger.
4808         Added `--help-debug' option to describe the debugging options.
4809         (parse_debug_options): New static function to parse the `--debug'
4810         options, so we can easily add more stuff in future.
4811
4812 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
4813
4814         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
4815         the method has no body.
4816
4817 2008-04-19  Jonathan Chambers <joncham@gmail.com>
4818
4819         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
4820         assembly is not allowed in MSVC 64-bit compiler. 
4821         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
4822         as we get floating point exceptions everywhere.
4823         
4824         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
4825         correctly align arguments for call to throw_exception.
4826         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
4827         
4828         Code contributed under MIT/X11 license.
4829
4830 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
4831
4832         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
4833
4834 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
4835
4836         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
4837
4838         * mini-amd64.c (NEW_INS): Set cil_code.
4839
4840         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
4841         from mini-amd64.c so all debugger related logic is in one place.
4842
4843         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
4844         later won't have a random ip assigned to them.
4845
4846 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
4847
4848         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
4849         the arch specific function initializes code_size.
4850         (mono_create_delegate_trampoline): Ditto.
4851
4852         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
4853         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
4854         platforms.
4855
4856         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
4857         running under the debugger.
4858
4859         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
4860         debugger.
4861
4862         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
4863         debugger. Also move the disabling of optimizations here from driver.c.
4864         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
4865         debugger.
4866
4867         * mini.h (MonoCompile): Add a few new flags.
4868
4869 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
4870
4871         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
4872         so the cil_code field of created MonoInst's is properly set.
4873         (mini_select_instructions): Ditto.
4874
4875         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
4876         (MONO_INST_NEW_CALL): Ditto.
4877
4878         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
4879         in many places so the ins->cil_code field is properly initialized.
4880
4881         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
4882         place.
4883
4884 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
4885
4886         * mini.c (mini_method_compile): Print a different message when compiling a 
4887         shared method.
4888         
4889         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
4890         > 1.
4891
4892 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4893
4894         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
4895         SSE2 instructions.
4896
4897         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
4898         
4899 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4900
4901         * mini.c (handle_stack_args): Make this return void since its return value was
4902         never used. Also set cfg->unverifiable for invalid IL instead of calling
4903         G_BREAKPOINT ().
4904
4905 2008-04-10  Mark Probst  <mark.probst@gmail.com>
4906
4907         * mini.c: Make sure "this" is live in catch clauses with type
4908         variables in shared generic code.
4909
4910 2008-04-08  Mark Probst  <mark.probst@gmail.com>
4911
4912         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
4913         generic_class_is_reference_type() to ensure the proper behaviour
4914         when sharing generic code and the type in question is a type
4915         argument.
4916
4917 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4918
4919         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
4920         race conditions when printing thread dumps. Fixes #377738.
4921
4922 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
4923         
4924         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
4925         shows up when both MonoInst arguments can cause aliasig.
4926         There is likely no way in the current JIT to trigger this problem, but
4927         it showed up in the development of generics sharing, when in a new
4928         opcode both args of an OP_GROUP can be aliases (addresses of a local).
4929         When the generics sharing code will be committed, its tests will be
4930         valid also for this bug.
4931
4932 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4933
4934         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
4935         PATCH_INFO_METHOD.
4936
4937         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
4938         NULL.
4939
4940 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
4941
4942         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
4943         use a more detailed exception message for InvalidCastException.
4944
4945         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
4946
4947         * driver.c (mono_main): Add --debug=casts option to turn on better 
4948         InvalidCastException message details.
4949
4950         * mini.c (mini_get_debug_options): New helper function to return the address of
4951         the debug_options variable.
4952
4953         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
4954         the jit_tls TLS variable.
4955
4956         * mini.c (mono_jit_tls): New TLS variable.
4957
4958         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
4959         option is used.
4960
4961 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
4962
4963         * mini.h: Removed verifer related stuff. This code was moved to verify.c
4964
4965         * mini.c: Removed verifer related stuff, code moved to verify.c.
4966
4967         * driver.c: Using code from verify.c instead of mini.c.
4968
4969 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
4970
4971         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
4972         longer valid.
4973
4974 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
4975
4976         * mini.c (check_for_method_verify): Enabling verification of
4977         corlib if mono_verify_all is set. Bugs in the verifier preventing that
4978         have been fixed.
4979
4980 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
4981
4982         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
4983         caller saved registers as well.
4984         
4985         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
4986         saved registers as well.
4987
4988 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
4989
4990         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
4991
4992         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
4993         code.
4994
4995 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
4996
4997         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
4998         to get_call_info.
4999         (get_call_info): Take a gsctx argument instead of 'cfg'.
5000
5001 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
5002
5003         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
5004         mono_verify_all is set.
5005
5006         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
5007
5008         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
5009
5010 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
5011
5012         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
5013         an exception.
5014
5015         * driver.c mini.c mini.h: Add a --verify-all development option to test the
5016         verifier and the code generated by the compiler.
5017
5018 2008-03-25  Mark Probst  <mark.probst@gmail.com>
5019
5020         * mini.c: Generic sharing of the non-nullable case of the box
5021         instruction.
5022
5023 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
5024
5025         * inssel.brg: Fix the build.
5026
5027         * iltests.il.in: Add a test for lconv.ovf.u8.un.
5028
5029 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
5030
5031         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
5032         Array:Address. Fixes #372410.
5033
5034         * iltests.il.in: New tests for readonly prefix.
5035
5036 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
5037
5038         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
5039         mini-trampolines.c.
5040
5041         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
5042         mini-exceptions.c.
5043
5044         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
5045         
5046         * mini.c (mono_decompose_op_imm): New helper function.
5047
5048         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
5049         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
5050         return value.
5051
5052         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
5053         mono_arch_output_basic_block. Fix warnings.
5054
5055         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
5056         for now.
5057
5058 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
5059
5060         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
5061         since the extra frame is now detected automatically inside the loop.
5062
5063         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
5064         opts which are now in mono_peephole_ins ().
5065         
5066         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
5067
5068         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
5069         frames and skip duplicate managed-to-native frames. Fixes #367665.
5070
5071         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
5072         opts which are now in mono_peephole_ins ().
5073         (mono_arch_peephole_pass_2): Ditto.
5074
5075         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
5076
5077         * mini-codegen.c (mono_peephole_ins): New helper function containing the
5078         arch independent peephole optimizations.
5079
5080         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
5081         opts which are now in mono_peephole_ins ().
5082
5083         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
5084         
5085         * mini-s390.c (mono_arch_output_basic_block): Fix build.
5086
5087         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
5088         pattern.
5089
5090         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
5091         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
5092         opcode. 
5093
5094 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
5095
5096         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
5097         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
5098         return value.
5099
5100         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
5101         mono_arch_output_basic_block. Fix warnings.
5102
5103 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5104
5105         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
5106         conv.ovf.u.un.
5107
5108 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5109
5110         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
5111         conv.ovf.u.un.
5112
5113         * iltests.il: Add new tests.
5114
5115 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
5116
5117         * mini.c: Removed Windows version macros.
5118
5119 2008-03-20  Mark Probst  <mark.probst@gmail.com>
5120
5121         * generic-sharing.c: Put reflection types in the extensible part
5122         of the runtime generic context.
5123
5124         * mini.c: Generic sharing of the GetTypeHandle special case of the
5125         ldtoken instruction.
5126
5127 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5128
5129         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
5130
5131         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
5132         
5133         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
5134         consistency with the other version on the linear IR branch.
5135
5136         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
5137
5138         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
5139
5140         * iltests.il.in: Add new tests.
5141
5142 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
5143
5144         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
5145
5146         * iltests.il.in: Add new tests.
5147
5148 2008-03-19  Mark Probst  <mark.probst@gmail.com>
5149
5150         * mini.c: Two variables with the same name were declared in
5151         nesting contexts and one wasn't initialized.  Fixed.
5152
5153 2008-03-19  Mark Probst  <mark.probst@gmail.com>
5154
5155         * mini.c: Generic sharing of the initobj instruction.
5156
5157 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
5158
5159         * mini.c: make the test to optimize ldtoken from typeof() more
5160         precise.
5161
5162 2008-03-18  Mark Probst  <mark.probst@gmail.com>
5163
5164         * mini.c: Generic sharing of the initobj instruction for reference
5165         types.
5166
5167 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5168
5169         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
5170         the mono_breakpoint_clean_code() code to perform bound checks.
5171
5172 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
5173
5174         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
5175         mono_arch_patch_callsite() to include the start of the managed method
5176         to be able to perform bound checks.
5177
5178 2008-03-17  Mark Probst  <mark.probst@gmail.com>
5179
5180         * mini.c: Generic sharing for the isinst instruction.
5181
5182 2008-03-17  Mark Probst  <mark.probst@gmail.com>
5183
5184         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
5185         inssel-long32-mips.brg: Added opcodes for doing indirect calls
5186         with the runtime generic context argument.
5187
5188         * mini.c: Share calls to several types of unsharable methods by
5189         putting the address of the method code in the runtime generic
5190         context and doing an indirect call.
5191
5192         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
5193         to switches.
5194
5195 2008-03-16  Mark Probst  <mark.probst@gmail.com>
5196
5197         * generic-sharing.c: Change due to a change in the runtime genric
5198         context API.
5199
5200 2008-03-15  Martin Baulig  <martin@ximian.com>
5201
5202         * tramp-x86.c
5203         (mono_arch_nullify_class_init_trampoline): Add call to
5204         mono_breakpoint_clean_code() to make things work when running
5205         inside the debugger.
5206
5207         * tramp-amd64.c
5208         (mono_arch_nullify_class_init_trampoline): Add call to
5209         mono_breakpoint_clean_code() to make things work when running
5210         inside the debugger.
5211
5212 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5213
5214         * inssel-long.brg (reg): Fix 64 bit build.
5215
5216 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5217
5218         * mini.c, mini.h: Share static generic code by passing it an
5219         implicit argument pointing to the runtime generic context.
5220
5221         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
5222         inssel-long32-mips.brg: New opcodes for calling shared static,
5223         which need to be passed the runtime generic context.
5224
5225         * mini-amd64.c, mini-x86.c: Save the runtime generic context
5226         argument on the stack in the prologue if needed.  New function for
5227         finding the runtime generic context argument from the registers
5228         saved by the trampoline.
5229
5230         * mini-amd64.h, mini-x86.h: Specify which register to use for the
5231         runtime generic context argument.
5232
5233         * tramp-amd64.c: Also restore the register used for the runtime
5234         generic context argument.
5235
5236         * mini-trampoline.c: Resolve shared static calls by consulting the
5237         runtime generic context via the new argument.
5238
5239         * generic-sharing.c: Add an argument to sharability-checking
5240         functions that specifies whether type variables should be treated
5241         as sharable type arguments.
5242
5243         * inssel-x86.brg: Removed a superfluous, buggy rule.
5244
5245         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
5246         to switches.
5247
5248 2008-03-14  Martin Baulig  <martin@ximian.com>
5249
5250         * debug-debugger.c (main_thread_handler): Call
5251         mono_runtime_run_main() without sending any notifications.
5252
5253         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
5254
5255 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5256
5257         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
5258
5259 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5260
5261         * tramp-x86.c: Fixed register restore offsets in the trampoline
5262         code for ECX and EDX.
5263
5264 2008-03-12  Geoff Norton  <gnorton@novell.com>
5265
5266         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
5267         different ucontext_t implementations.
5268         * exceptions-arm.c: Use the above defines to get exceptions working on 
5269         iPhone (based on a patch by Luke Howard lukeh@padl.com)
5270         * mini-arm.c: Implement iPhone icache support (based on a patch by
5271         Luke Howard lukeh@padl.com)
5272
5273 2008-03-12  Mark Probst  <mark.probst@gmail.com>
5274
5275         * mini.c: Enable generic sharing of calls to non-static
5276         non-interface non-generic non-value-type methods.
5277
5278         * mini-trampolines.c: Resolve calls from shared generic code.
5279
5280 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
5281
5282         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
5283
5284         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
5285
5286 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
5287
5288         * mini.c: some fixes for the AOT compiler.
5289
5290 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5291
5292         * cpu-amd64.md: Add clob:1 to some float opcodes.
5293
5294 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
5295
5296         * mini.h: Added MiniVerifierMode enumeration.
5297
5298         * mini.c: Added mini_verifier_set_mode to control
5299         the usage of the new verifier.
5300
5301         * mini.c (mono_method): Integrated the new verifier.
5302
5303         * driver.c: Extended --security option with validil and
5304         verifiable options to activate the new verifier.
5305
5306 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5307
5308         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
5309         optimization to ctors taking 0 or 2 arguments too.
5310
5311         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
5312         a bit.
5313
5314         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
5315
5316         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
5317
5318 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
5319
5320         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
5321         non-aot case as well.
5322
5323         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
5324
5325         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
5326         changes.
5327
5328         * aot-compiler.c (encode_patch): Ditto.
5329
5330         * mini.h (G_MININT32): Fix the definition of this.
5331
5332 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
5333
5334         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
5335
5336         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
5337
5338 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5339
5340         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
5341         methods returning vtypes in registers.
5342         (mono_arch_allocate_vars): Ditto.
5343
5344         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
5345
5346         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
5347
5348         * generics.cs: Add a test from the linear IR branch.
5349
5350         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
5351
5352         * mini.c (inline_method): Cache failed inline attempts.
5353
5354 2008-03-04  Mark Probst  <mark.probst@gmail.com>
5355
5356         * mini.c: For shared methods of generic classes put the location
5357         of "this" into the MonoGenericJitInfo.
5358
5359         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
5360         register out of a MonoContext by register number.  Add the generic
5361         sharing context as an argument to mono_arch_find_this_argument().
5362
5363         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5364         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
5365         for new arch function.
5366
5367         * mini-exception.c: Handle open exception clauses in shared
5368         generic code.
5369
5370         * mini-trampolines.c: Supply additional argument to
5371         mono_arch_find_this_argument().
5372
5373 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5374
5375         * Makefile.am (regtests): Run the bench.exe tests last.
5376
5377 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
5378
5379         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
5380         a bit.
5381
5382 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
5383
5384         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
5385         with MS.
5386
5387         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
5388         
5389         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
5390
5391         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
5392         whose class has no cctor.
5393
5394         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
5395
5396 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
5397
5398         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
5399         unverified.
5400
5401 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
5402
5403         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
5404         to be in sync with the code on the linear IR branch.
5405
5406         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
5407
5408         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
5409
5410 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
5411
5412         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
5413
5414         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
5415
5416         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
5417
5418         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
5419
5420         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
5421         
5422         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
5423         body.
5424
5425 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
5426
5427         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
5428         OP_LOADR4_MEMBASE emission.
5429
5430         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
5431         (mono_spillvar_offset_float): Ditto.
5432
5433         * mini-mips.c (mono_arch_emit_prolog): Ditto.
5434
5435         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
5436         emission.
5437
5438         * basic-long.cs: Add regression tests for them.
5439
5440         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
5441         use.
5442         (mono_arch_allocate_vars): Fix representation of single-precision float
5443         argument.
5444         (mono_arch_output_basic_block): Ditto.
5445
5446         * inssel-mips.brg: Ditto, remove duplicate items.
5447
5448         * mini-mips.c (emit_load_volatile_arguments): New function to handle
5449         arguments of tail calls as on other platforms.
5450         (mono_arch_output_basic_block): Handle tail calls.
5451
5452         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
5453         register.
5454
5455         * objects.cs (test_5_pass_static_struct): Add test for it.
5456
5457         Contributed under MIT/X11 license.
5458
5459 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
5460
5461         * Makefile.am: Use gmcs for compiling the regression tests.
5462
5463         * *.2.cs *.2.il: Rename to *.cs and *.il.
5464
5465 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
5466
5467         * regalloc.h: Make the vassign array smaller.
5468
5469         * mini.c (mini_method_compile): Remove an unused field in cfg.
5470
5471         * mini-codegen.c: Add a bunch of micro optimizations.
5472
5473 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
5474
5475         * regalloc.h: Remove some unused fields.
5476
5477 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
5478
5479         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
5480
5481         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
5482
5483 2008-02-22  Mark Probst  <mark.probst@gmail.com>
5484
5485         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
5486
5487         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
5488         trampoline: Fetch an entry from the runtime generic context.  If
5489         it's NULL, jump to the actual trampoline to fill the runtime
5490         generic context.  Otherwise, return it.
5491
5492         * mini.c: Call the lazy fetch trampoline to get entries out of the
5493         runtime generic context.
5494
5495         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
5496         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
5497         tramp-sparc.c: Stubs for the lazy fetch trampoline.
5498
5499 2008-02-21  Mark Probst  <mark.probst@gmail.com>
5500
5501         * mini.c: Fetch data out of the extensible part of the runtime
5502         generic context instead of calling a helper function.
5503
5504         * generic-sharing.c: Some functions moved into
5505         metadata/generic-sharing.c.  Helper function for fetching other
5506         types now checks and asserts against extensible rgctx (just for
5507         debugging purposes - the helper function isn't called anymore
5508         unless for debugging).
5509
5510 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5511
5512         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
5513         for tail calls up to the point that the tests in iltests.exe run. Also add a
5514         dummy CKFINITE implementation.
5515         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
5516         needed for trampoline LMF frames.
5517
5518         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
5519         trampoline LMF frames.
5520
5521 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
5522
5523         * mini.c (inline_method): clean any pending loader error when inlining fail.
5524         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
5525
5526 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5527
5528         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
5529
5530         * aot-runtime.c (decode_patch_info): Ditto.
5531
5532         * mini.c (mono_resolve_patch_target): Ditto.
5533         
5534         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
5535         icall wrappers.
5536
5537         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
5538         
5539         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
5540         if it references an icall address.
5541
5542 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
5543
5544         * cpu-s390x.md: Remove some more unused opcodes.
5545         
5546         * cpu-s390x.md: Remove some unused opcodes.
5547
5548         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
5549         mono_op_imm_to_op ().
5550
5551         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
5552         instead of a switch statement.
5553         
5554         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
5555         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
5556
5557         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
5558         
5559         * mini-codegen.c: Remove unused mono_regstate2_... functions.
5560
5561         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
5562         -1.
5563
5564 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
5565
5566         * driver.c (mono_main): Improve error reporting when an assembly cannot be
5567         opened. Fixes #362607.
5568
5569         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
5570
5571         * iltests.il.in: Add a test for static methods in interfaces.
5572
5573 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
5574
5575         * genmdesc.c (build_table): Fix a crash on older glib versions.
5576
5577         * cpu-sparc.md: Remove some unused opcodes.
5578         
5579         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
5580         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
5581
5582         * cpu-amd64.md: Remove some unused opcodes.
5583
5584         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
5585         like the other opcodes.
5586
5587 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
5588
5589         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
5590
5591         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
5592
5593         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
5594         variables 'cfg' instead of 'm' for consistency.
5595
5596         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
5597
5598         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
5599         argument holding the vtype return address, to avoid the ambigious use of
5600         cfg->ret for this purpose.
5601
5602         * mini.c (NEW_RETLOADA): Use vret_addr if set.
5603
5604         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
5605         
5606         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
5607         new mono_print_ins () function which only takes one argument.
5608
5609 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
5610
5611         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
5612         macro arguments.
5613
5614 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
5615
5616         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
5617
5618         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
5619
5620         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
5621         opcodes and other small changes.
5622
5623         * mini-ops.h: Add some new opcodes from the linear IR branch.
5624
5625         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
5626
5627         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
5628         opcodes, use the REG_MEMBASE opcodes instead.
5629         
5630         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
5631         opcodes, use the REG_MEMBASE opcodes instead.
5632         
5633         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
5634         linear IR branch.
5635
5636         * mini.c (mono_op_imm_to_op): New helper function.
5637
5638         * mini-ops.h: Add some opcodes from linear IR branch.
5639
5640 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
5641
5642         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
5643         <tsv@solvo.ru>.
5644
5645 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
5646
5647         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
5648         OP_ICONV_TO_R4/R8.
5649
5650         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
5651
5652 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
5653
5654         * aot-compiler.c (emit_method_code): Add an assert.
5655
5656         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
5657         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
5658         methods.
5659
5660 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
5661
5662         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
5663         some load/store opcodes so they are consistent. 
5664         (mono_arch_emit_prolog): Simplify some code.
5665
5666         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
5667
5668         * objects.cs: Add tests for large argument offsets on ARM.
5669
5670         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
5671         stack offsets. Fixes #359651.
5672
5673         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
5674
5675         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
5676
5677         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
5678
5679         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
5680
5681         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
5682
5683         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
5684         rid of CEE_CONV_R_UN.
5685
5686         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
5687
5688 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
5689
5690         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
5691
5692         * mini.c (mono_normalize_opcodes): Add some more opcodes.
5693
5694         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
5695
5696         * cpu-amd64.md: Remove some unused opcodes.
5697
5698         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
5699
5700         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
5701
5702         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
5703         arch specific functions for its parts. Call the peephole pass after local
5704         regalloc so the prolog can compute a more accurate max_offset.
5705         
5706         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
5707         the corresponding OP_I/OP_L opcodes.
5708
5709         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
5710
5711         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
5712
5713 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5714
5715         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
5716         as they are handled in mini.c.
5717
5718         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
5719         
5720         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
5721         case since it is handled in mini.c.
5722
5723         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
5724
5725         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
5726
5727         * *.c: Use the new opcodes in the IR and back end code.
5728
5729         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
5730
5731         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
5732
5733 2008-02-06  Mark Probst  <mark.probst@gmail.com>
5734
5735         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
5736         an assert because it has a race condition.
5737
5738 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5739
5740         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
5741
5742         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
5743
5744         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
5745
5746         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
5747         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
5748
5749 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
5750
5751         * cpu-amd64.md (move): Correct the maximum size of move.
5752
5753 2008-02-05  Mark Probst  <mark.probst@gmail.com>
5754
5755         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
5756         the generic class init trampoline to return quickly if the class
5757         is already inited.
5758
5759 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
5760
5761         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
5762         issues where an 32 bit callsite cannot be patched by a 64 bit address.
5763
5764 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
5765
5766         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
5767         branch.
5768
5769 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
5770
5771         * objects.cs: Add some soft-float tests.
5772
5773         * mini.c: Fix a couple more soft-float issues.
5774
5775         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
5776
5777         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
5778         avoid a REX prefix.
5779
5780 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
5781
5782         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
5783         exception happens while compiling a virtual method.
5784
5785 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
5786
5787         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
5788         
5789         * mini-sparc.c: Fix build.
5790
5791         * mini-sparc.c (get_call_info): Add support for generic sharing.
5792
5793         * mini-exceptions.c: Add a FIXME.
5794
5795 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
5796
5797         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
5798         altstack handling code.
5799
5800         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
5801         
5802         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
5803
5804         * mini-s390.c: Add support for generic sharing.
5805
5806         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5807         Fix CAS on s390.
5808         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5809
5810         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
5811
5812         * mini-s390x.c: Add support for generic sharing.
5813         
5814         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5815         Fix CAS on ia64.
5816         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5817
5818         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
5819         can be used since it takes a 16 bit signed immediate.
5820
5821         * inssel-s390x.brg: Fix OP_SETRET.
5822
5823         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
5824
5825         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
5826
5827         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
5828
5829         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
5830
5831         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
5832         in one place.
5833
5834         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
5835         stuff.
5836
5837         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
5838         of the unused mono_arch_patch_delegate_trampoline stuff.
5839
5840 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
5841
5842         * basic-long.cs: Move the fp related tests to basic-float.cs.
5843
5844         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
5845
5846         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
5847
5848         * basic-calls.cs: Add a test for proper float argument passing.
5849
5850         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
5851         if the context corresponds to an exception received through a signal.
5852
5853         * exceptions.cs: Add a test for nullref handling at the start of a try
5854         clause.
5855
5856         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
5857
5858         * jit-icalls.c (mono_break): New JIT icall.
5859
5860         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
5861
5862         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
5863
5864 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
5865
5866         * cpu-*.md: Get rid of unused opcodes.
5867
5868         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
5869
5870         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
5871         by all platforms.
5872
5873         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
5874         define.
5875
5876         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
5877         the arch independent trampoline code in mini-trampolines.c.
5878
5879         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
5880
5881         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
5882
5883         * mini-s390.h: Remove an unused define.
5884         
5885         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
5886         the arch independent trampoline code in mini-trampolines.c.
5887
5888         * mini-arm.c (mono_arch_emit_prolog): Fix build.
5889
5890 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
5891
5892         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
5893
5894         * mini-s390.c (mono_arch_emit_prolog): Fix build.
5895
5896         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
5897
5898         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
5899
5900         * cpu-amd64.md: Use smaller sizes for int opcodes.
5901
5902         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
5903
5904         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
5905         objects.cs.
5906
5907         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
5908         debugging.
5909
5910         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
5911         instead of though a pointer to save an indirection when accessing elements of
5912         the array.
5913
5914         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
5915         some typos.
5916         (NOT_IMPLEMENTED): New helper macro.
5917         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
5918         of a bb.
5919
5920         * *.c: Use the new helper macro.
5921
5922 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
5923
5924         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
5925
5926 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
5927
5928         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
5929         stack slots.
5930
5931 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
5932
5933         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
5934         profiling is enabled.
5935         
5936         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
5937         the end.
5938         (mono_arch_emit_prolog): Add more first bblock optimizations.
5939
5940         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
5941         in order if possible.
5942         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
5943         bblock, since the arguments are still in their original registers.
5944
5945         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
5946
5947 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
5948
5949         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
5950         as well.
5951
5952         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
5953         offset 0.
5954
5955         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
5956
5957         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
5958         process async exceptions received while in unmanaged code.
5959
5960         * mini.c (mini_init): Install a callback with the runtime which will be called
5961         when a thread receives an async exception while in unmanaged code.
5962
5963         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
5964
5965         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
5966
5967 2008-01-16  Wade Berrier  <wberrier@novell.com>
5968
5969         * cpu-g4.md:
5970         * cpu-arm.md:
5971         * cpu-s390x.md:
5972         fix build
5973
5974 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
5975
5976         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
5977         compilation with sun cc.
5978
5979         * cpu-*.md: Fix the build.
5980
5981         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
5982
5983         * mini-amd64.h: Add some comments to the MonoLMF structure.
5984
5985         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
5986         
5987         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
5988         in the LMF structure if possible. This saves two instructions in the
5989         managed->native wrappers.
5990
5991         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
5992
5993 2008-01-16  Mark Probst  <mark.probst@gmail.com>
5994
5995         * generic-sharing.c: New type argument lookup code which uses the
5996         runtime generic context template.
5997
5998 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
5999
6000         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
6001
6002         * mini-arm.c (add_general): Fix arm eabi parameter passing.
6003         (mono_arch_output_basic_block): Fix localloc implementation.
6004
6005         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
6006
6007         * mini-ia64.c (peephole_pass): Fix ia64 build.
6008
6009         * mini-amd64.c (peephole_pass): Fix a warning.
6010         
6011         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
6012         at a constant offset from sp/fp.
6013
6014         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
6015         instead of obtaining it from *lmf in the managed method case.
6016
6017 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
6018
6019         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
6020
6021 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
6022
6023         * mini.h (MonoInstList): New type.
6024         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
6025         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
6026         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
6027         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
6028         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
6029         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
6030         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
6031         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
6032         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
6033         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
6034         MONO_INST_LIST_FOR_EACH_ENTRY,
6035         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
6036         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
6037         mono_inst_list_first, mono_inst_list_last,
6038         mono_inst_list_next, mono_inst_list_prev): New instruction
6039         list handling interfaces.
6040         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
6041         list head 'ins_list'.
6042         (MonoInst): Replace next pointer with list head 'node'.
6043         (MonoCallInst): Make 'out_args' a MonoInstList.
6044         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
6045         (MonoCompile): Delete reverse_inst_list and
6046         reverse_inst_list_len.
6047         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
6048         mono_arch_lowering_pass, mono_arch_local_regalloc,
6049         mono_arch_output_basic_block, mono_arch_emit_prolog):
6050         Convert to new instruction lists.
6051         (insert_after_ins): Delete.
6052         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
6053         instruction lists.
6054         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
6055         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
6056         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
6057         mono_emulate_opcode, mono_emit_load_got_addr,
6058         inline_method, mono_method_to_ir, mono_print_bb_code,
6059         print_dfn, decompose_pass, nullify_basic_block,
6060         replace_out_block_in_code, remove_block_if_useless,
6061         merge_basic_blocks, move_basic_block_to_end,
6062         try_unsigned_compare, optimize_branches, mono_print_code,
6063         mini_select_instructions, remove_critical_edges): Likewise.
6064         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
6065         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
6066         mono_arch_output_basic_block, mono_arch_emit_prolog):
6067         Likewise.
6068         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
6069         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6070         mono_arch_output_basic_block): Likewise.
6071         (inst_list_prepend, insert_after_ins): Delete.
6072         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
6073         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
6074         instruction lists.
6075         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
6076         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
6077         mono_arch_emit_prolog): Likewise.
6078         * cfold.c (mono_constant_fold): Likewise.
6079         * liveness.c (visit_bb, mono_analyze_liveness,
6080         optimize_initlocals): Likewise.
6081         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
6082         * graph.c (mono_draw_code_cfg): Likewise.
6083         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
6084         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
6085         mono_ssa_cprop): Likewise.
6086         * abcremoval (get_relations_from_previous_bb, process_block):
6087         Likewise.
6088         * local-propagation (mono_cprop_invalidate_values,
6089         mono_local_cprop_bb): Likewise.
6090         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
6091         peephole_pass, mono_arch_output_basic_block,
6092         mono_arch_emit_prolog): Likewise.
6093         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
6094         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6095         mono_arch_emit_prolog): Likewise.
6096         (insert_after_ins): Delete.
6097         * aliasing.c (print_code_with_aliasing_information,
6098         mono_build_aliasing_information, mono_aliasing_deadce):
6099         Convert to new instruction lists.
6100         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
6101         peephole_pass, NEW_INS, mono_arch_lowering_pass,
6102         mono_arch_local_regalloc, mono_arch_output_basic_block):
6103         Likewise.
6104         (insert_after_ins): Delete.
6105         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
6106         peephole_pass, mono_arch_output_basic_block): Convert to
6107         new instruction lists.
6108         * mini-codegen (InstList, inst_list_prepend,
6109         insert_after_ins): Delete.
6110         (insert_before_ins, get_register_force_spilling,
6111         get_register_spilling, free_up_ireg, free_up_reg,
6112         create_copy_ins, create_spilled_store, alloc_int_reg,
6113         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
6114         to new instruction lists.
6115         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
6116         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6117         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
6118         (insert_after_ins): Delete.
6119         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
6120         mono_arch_local_regalloc, mono_arch_output_basic_block,
6121         mono_arch_call_opcode): Convert to new instruction lists.
6122         (insert_after_ins): Delete.
6123         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
6124         peephole_pass, mono_arch_output_basic_block,
6125         mono_arch_emit_prolog): Convert to new instruction lists.
6126
6127 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
6128
6129         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
6130
6131         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
6132         Fixes #353182.
6133
6134         * Makefile.am (version.h): Make this work with non-bash shells.
6135
6136 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
6137
6138         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
6139
6140 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
6141
6142         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
6143         the InitializeArray optimization.
6144
6145 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
6146
6147         * mini.c driver.c: Don't include os/gc_wrapper.h.
6148
6149 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
6150
6151         * mini.c (print_jit_stats): Print GC statistics if available.
6152
6153 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
6154
6155         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
6156
6157 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
6158
6159         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
6160
6161 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
6162
6163         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
6164         
6165         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
6166
6167         * driver.c (mono_main): Ditto.
6168
6169 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
6170
6171         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
6172
6173         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
6174         in the vtable can't be encoded.
6175         (compile_method): Ditto.
6176
6177 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
6178
6179         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
6180         defined.
6181
6182         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
6183         lmf->rbp.
6184
6185         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
6186         the top LMF entry belongs to the current method.
6187
6188         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
6189
6190 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
6191
6192         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
6193         
6194         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
6195
6196         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
6197
6198         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
6199
6200         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
6201
6202         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
6203         implementation.
6204
6205         * basic-float.cs: Add an ulong->double cast test.
6206
6207 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
6208
6209         * mini.c (mono_method_to_ir): Fix a warning.
6210
6211 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
6212
6213         * mini-ops.h: Add OP_SWITCH.
6214
6215         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
6216         CEE_SWITCH in back-end code, use OP_SWITCH instead.
6217
6218 2007-12-11  Geoff Norton  <gnorton@novell.com>
6219
6220         * mini-s390x.c: Minor change to the MAX() define to allow
6221         it to compile with other gcc versions.
6222
6223 2007-12-11  Geoff Norton  <gnorton@novell.com>
6224
6225         * cpu-s390x.md:
6226         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
6227
6228 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6229
6230         exceptions-arm.c (mono_arch_get_restore_context): Restore
6231         the frame pointer.
6232
6233         exceptions-arm.c (throw_exception): Save the frame pointer.
6234         This is a partial fix for #323747. Only the client side is
6235         fixed.
6236
6237 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6238
6239         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
6240         was using an unrelated variable to log the class which
6241         needed the cctor to be called. This was crashing on arm.
6242
6243 2007-12-09  Robert Jordan  <robertj@gmx.net>
6244
6245         * mini-x86.c (mono_arch_emit_epilog):
6246         Consider all kinds of 64-bit types. Fixes #323114.
6247
6248 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
6249
6250         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
6251
6252 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6253
6254         * mini-amd64.c (peephole_pass): Add a missing instruction check.
6255
6256 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6257
6258         * mini.c: run type ctor before allocating an object, not only
6259         when running it's constructor method (fixes at least part of bug #342507).
6260
6261 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6262         
6263         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
6264         
6265         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
6266         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
6267         function.
6268
6269         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
6270         mono_generic_class_init_trampoline () the same as it is done with the other
6271         trampolines.
6272
6273         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
6274         aot-runtime.c aot-compiler.c: Implement AOT support.    
6275
6276 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6277
6278         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
6279         build for archs which don't have the vtable trampoline defined
6280         yet.
6281
6282 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6283
6284         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
6285
6286         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
6287
6288         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
6289
6290         * tramp-<ARCH>.c: Use the new helper function.
6291
6292 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6293
6294         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
6295         trampoline call, which takes a vtable argument.
6296
6297         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
6298         OP_TRAMPCALL_VTABLEs like other calls.
6299
6300         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
6301         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
6302         call.  Implemented a support function which fetches the vtable
6303         from a register set.
6304
6305         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
6306         Implemented a generic class init trampoline, using the
6307         OP_TRAMPCALL_VTABLE opcode.
6308
6309         * mini.c: Implemented static field access when sharing generic
6310         code.  This implies initing the class using the new
6311         OP_TRAMPCALL_VTABLE call.
6312
6313 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6314
6315         * mini.c: Don't compile methods with sharing enabled if their
6316         classes are disabled for sharing.
6317
6318 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6319
6320         * inssel.brg: Add a missing sign extension to the GETCHR and array access
6321         opcodes. Fixes #346563.
6322
6323         * objects.cs: Add a new test.
6324
6325         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
6326
6327         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
6328         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
6329
6330 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6331
6332         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
6333
6334 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
6335
6336         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
6337         code stream.
6338
6339 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
6340
6341         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
6342
6343         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
6344         optimization in the AOT case.
6345         
6346 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
6347
6348         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
6349         
6350         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
6351
6352         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
6353
6354         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
6355
6356         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
6357         is created by the inlined delegate ctor.
6358
6359         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
6360
6361         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
6362
6363 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
6364
6365         * cpu-x86.md: Fix the length of ckfinite.
6366
6367 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
6368
6369         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
6370         
6371         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
6372         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
6373
6374         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
6375
6376         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
6377         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
6378
6379 2007-11-28  Martin Baulig  <martin@ximian.com>
6380
6381         * mini-x86.c
6382         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
6383         after creating the trampoline.
6384
6385 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
6386
6387         * aot-runtime.c (load_aot_module): Check runtime version if needed.
6388
6389         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
6390         the same version.
6391
6392         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
6393         instead of the calling method to help AOT.
6394
6395         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
6396
6397 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
6398
6399         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
6400         is defined.
6401
6402 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
6403
6404         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
6405         
6406         * aot-compiler.c (compile_method): Correct check for generic method definitions.
6407         (encode_method_ref): No need to handle generic method definitions specially.
6408
6409         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6410
6411         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
6412         decode_klass_info.
6413
6414         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
6415         encode_klass_info.
6416         (compile_method): Enable generic sharing.
6417
6418 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
6419
6420         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
6421         (mini_method_compile): Add preliminary support for AOTing shared generic code.
6422
6423         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
6424         generic code.
6425
6426         * mini-trampolines.c: Fix a warning.
6427
6428         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
6429         NEW_PCONST.
6430         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
6431         (generic_class_is_reference_type): Remove unused function.
6432
6433         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
6434         in the generic vtable trampoline case.
6435
6436         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
6437         
6438         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
6439         return an AOT method based on a vtable slot.
6440
6441         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
6442
6443         * mini.c (mini_get_vtable_trampoline): Export this.
6444
6445 2007-11-22  Martin Baulig  <martin@ximian.com>
6446
6447         * debug-debugger.h
6448         (MonoDebuggerInfo): Move `debugger_version' up.
6449
6450 2007-11-22  Martin Baulig  <martin@ximian.com>
6451
6452         * mini-amd64.c
6453         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
6454
6455         * mini-trampolines.c
6456         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
6457         after compiling the method.
6458
6459 2007-11-20  Martin Baulig  <martin@ximian.com>
6460
6461         * debug-mini.c
6462         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
6463         (mono_debugger_remove_breakpoint): Likewise.
6464         (mono_debugger_check_breakpoints): Likewise.
6465
6466         * debug-debugger.c: Implement the new breakpoint interface here.
6467
6468 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
6469
6470         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
6471         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
6472
6473         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
6474
6475 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
6476
6477         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
6478
6479         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
6480         mini.c.
6481
6482         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
6483         mini.c.
6484
6485         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
6486         returning a vtype in a register.
6487
6488         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
6489         here from the arch specific code.
6490
6491         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
6492         mini.c.
6493
6494         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
6495         (mono_arch_emit_prolog): Increment maximum prolog size.
6496
6497         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
6498         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
6499
6500         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
6501         MonoGenericSharingContext.
6502
6503         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
6504         MonoGenericSharingContext. Allocate memory from the cfg mempool.
6505
6506 2007-11-15  Mark Probst  <mark.probst@gmail.com>
6507
6508         * mini.c, mini.h, generic-sharing.c: Functions for producing code
6509         which extract fields out of the runtime generic context.  Full
6510         sharing of the NEWARR opcode.
6511
6512 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6513
6514         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
6515         --enable-minimal=ssa.
6516
6517 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
6518
6519         * mini-trampolines.c (mono_delegate_trampoline): Update after 
6520         mono_marshal_get_delegate_invoke () signature change.
6521
6522 2007-11-13  Mark Probst  <mark.probst@gmail.com>
6523
6524         * mini.c: Removed the shared context in favor of the generic
6525         sharing context.  Allocate the MonoJitInfo structure with room for
6526         the generic sharing context if it's needed.
6527
6528         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
6529         domain-internals.h now.
6530
6531         * mini-x86.c: Pass the generic sharing context to get_call_info ().
6532
6533         * generic-sharing.c: Several changes for working without a shared
6534         context and instead operating on open types instead.
6535
6536 2007-11-12  David S. Miller  <davem@davemloft.net>
6537
6538        * inssel-sparc.brg: Fix double instruction emit.
6539
6540 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
6541
6542         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
6543         Get/Set/Address methods.
6544         
6545         * mini.c debug-debugger.c mini-trampolines.c: Update after 
6546         mono_marshal_get_delegate_invoke signature change.
6547
6548 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6549
6550         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
6551         This can happens with dynamic methods. Fixes the other bug in #322722.
6552
6553 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6554
6555         * tramp-arm.c (mono_arch_patch_callsite): Support patching
6556         BX call sequence.
6557
6558         * mini-arm.c (arm_patch): Implement patching of BX call
6559         sequence. Fixes one of the bugs in #322722.
6560
6561 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
6562
6563        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
6564        under Linux.  We only need to flush every 32-byte cache line.    
6565
6566 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
6567
6568         * mini.c:
6569         move_basic_block_to_end: Add branches when needed, eventually creating
6570         a new BB.
6571         optimize_branches: added a parameter that tells if it's ok to create
6572         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
6573         and avoid calling move_basic_block_to_end when it's not ok.
6574         Fixes bug 318677.
6575
6576 2007-11-07  Mark Probst  <mark.probst@gmail.com>
6577
6578         * mini.c: Abort inlining call to InitializeArray if something
6579         looks wrong.  Let the icall handle it, which now has proper safety
6580         checks.
6581
6582 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6583
6584         * mini.c (mono_spill_call): add support for soft-float.
6585
6586         * mini.c (mono_method_to_ir): add support for soft-float
6587         to inlined functions that return float.
6588
6589         * mini.c (mono_method_to_ir): add support for soft-float
6590         to cee_stsfld opcode on float fields.
6591
6592 2007-11-05  Geoff Norton  <gnorton@novell.com>
6593
6594         * mini-x86.h: Fix the structure access for X86 Leopard.
6595
6596
6597 2007-11-05  Martin Baulig  <martin@ximian.com>
6598
6599         * mini-trampolines.c
6600         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
6601         after compiling the method to notify the debugger.
6602
6603 2007-11-05  Martin Baulig  <martin@ximian.com>
6604
6605         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
6606
6607 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
6608
6609         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
6610         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
6611
6612 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
6615         native-to-managed wrappers.
6616         
6617 2007-11-01  Geoff Norton  <gnorton@novell.com>
6618
6619         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
6620         members.
6621
6622 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
6623
6624         * mini.c, mini-x86.c: when getting back from unmanaged code
6625         to managed via a marshaled delegate we also need to set the
6626         right domain.
6627
6628 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
6629
6630         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
6631         for amd64.
6632
6633 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6634
6635         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
6636         let the debugger or other external agents to tell the JIT when
6637         a sw breakpoint has been inserted in the code that the JIT needs
6638         to be able to inspect.
6639
6640 2007-10-31  Martin Baulig  <martin@ximian.com>
6641
6642         * debug-debugger.h
6643         (MonoDebuggerInfo): Remove `runtime_class_init'.
6644
6645 2007-10-30  Martin Baulig  <martin@ximian.com>
6646
6647         * debug-mini.h
6648         (mono_debugger_thread_created): Added `MonoThread *' argument.
6649         (mono_debugger_extended_notification): New public method.
6650         (mono_debugger_trampoline_compiled): New public method.
6651
6652         * debug-mini.c
6653         (MonoDebuggerThreadInfo): Added `thread' and
6654         `extended_notifications' fields.
6655
6656         * debug-debugger.c
6657         (debugger_executable_code_buffer): New static variable.
6658
6659         * debug-debugger.h
6660         (MonoDebuggerInfo): Added `executable_code_buffer',
6661         `executable_code_buffer_size', `breakpoint_info_area',
6662         `breakpoint_table' and `breakpoint_table_size'.
6663
6664 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
6665
6666         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
6667         that IP  either is an unused value or the vtable pointer. IMT 
6668         calls use vtable + offset now. Reduced by almost half the size
6669         of IMT entries.
6670
6671 2007-10-26  Jonathan Chambers <joncham@gmail.com>
6672
6673         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
6674         defines to access param registers. Replace long usage with
6675         gsize as sizeof(long) != sizeof(void*) on Win64.
6676
6677         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
6678         on Win64. Fix intrinsic, use _AddressOfReturnAddress
6679         instead of non-existant _GetAddressOfReturnAddress.
6680
6681         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
6682         param registers. Save/restore %rdi and %rsi in MonoLMF.
6683
6684         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
6685         param registers. Modify (throw_exception) signature to take 
6686         %rdi and %rsi on Win64. 
6687
6688         Code is contributed under MIT/X11 license.
6689
6690 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6691
6692         * helpers.c: unlink debugging output files.
6693
6694 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
6695
6696         * mini.c: Move mono_create_ftnptr () to object.c.
6697
6698 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6699
6700         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
6701         optional. This function can now be used to disassemble code generated
6702         outside the JIT such as trampolines and IMT thunks.
6703
6704         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
6705
6706         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
6707         vtable pointer from a ldr instruction.
6708
6709         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
6710         new IMT call sequence.
6711
6712         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
6713         call sequence for interface invocations.
6714
6715         * mini-arm.c (mono_arch_emit_imt_argument): added, required
6716         for imt support. This function is empty since IMT on ARM requires no
6717         special handling on the IR side.
6718
6719         * mini-arm.c (mono_arch_find_imt_method): added, required for
6720         imt support.
6721
6722         * mini-arm.c (mono_arch_find_this_argument): added, required
6723         for imt support.
6724
6725         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
6726         a ldr instruction to load a value stored in the code stream.
6727
6728         * mini-arm.c (mono_arch_build_imt_thunk):added, required
6729         for imt support.
6730
6731
6732 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
6733
6734         * mini.c (mini_init): Install the jump trampoline callback.
6735
6736 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6737
6738         * mini-trampolines.c: handle synchronized methods with the common
6739         vtable trampoline (bug #335601).
6740
6741 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
6742
6743         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
6744
6745         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
6746         64 bit platforms.
6747
6748         * mini-ia64.h mini-ia64.c: Add support for IMT.
6749
6750         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
6751         prolog. Fixes #331958.
6752
6753 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
6754
6755         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
6756
6757 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6758
6759         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
6760         trampoline.
6761
6762 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6763
6764         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
6765         trampoline.
6766
6767 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
6768
6769         * mini-x86.c, mini-x86.h: x86 support for the common vtable
6770         trampoline.
6771
6772 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
6773
6774         * mini-trampolines.c: changed the magic rampoline to understand
6775         the common vtable trampoline method: the method to invoke is
6776         determined by the vtable displacement of the call.
6777
6778 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6779
6780         * mini.c, mini.h: register the common vtable trampoline if the
6781         architecture supports it.
6782
6783 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6784
6785         * cpu-amd64.md: use the correct max length for tls_get.
6786
6787 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
6788
6789         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
6790         CEE_STELEM_ANY. Fixes #333696.
6791
6792 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
6793
6794         * exceptions-x86.c: provide more graceful handling of the case where
6795         we followed a bogus function pointer from managed code (bug #332866).
6796
6797 2007-10-11  Mark Probst  <mark.probst@gmail.com>
6798
6799         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
6800         replaces the generic_shared flag and will carry more information
6801         in the future.
6802
6803         * generic-sharing.c: Added mini_type_stack_size() which allows
6804         allows open types if given a generic sharing context.
6805         mini_get_basic_type_from_generic() takes a
6806         MonoGenericSharingContext* instead of a MonoCompile* now.
6807
6808         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
6809         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
6810         mini-sparc.c, mini-x86.c: Trivial changes required by the two
6811         changes above.  Just passing arguments through to the right
6812         places.
6813
6814 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
6815
6816         * mini-arm.c: unify the call emission to emit_code_seq().
6817
6818 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
6819
6820         * tramp-arm.c: reduced the trampoline size.
6821
6822 2007-10-10  Mark Probst  <mark.probst@gmail.com>
6823
6824         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
6825         variable handling out of arch-specific code.
6826
6827 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
6828
6829         * mini-arm.c: implemented fast delegate dispatch.
6830
6831 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6832
6833         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
6834         that fp elimination is turned off if the space required by locals is too
6835         big. Fixes #331958.
6836
6837 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
6838
6839         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
6840         ARM to the new style trampoline.
6841
6842 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6843
6844         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
6845
6846         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
6847
6848 2007-10-09  Martin Baulig  <martin@ximian.com>
6849
6850         * debug-debugger.h
6851         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
6852         `field_info_offset_offset'.     
6853
6854 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
6855
6856         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
6857         removed more internal usage of the r11 register and made it available
6858         to the register allocator.
6859
6860 2007-10-08  Mark Probst  <mark.probst@gmail.com>
6861
6862         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
6863         when sharing generics and treat type variables as references.
6864
6865 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6866
6867         * mini-ppc.c: started removing the internal uses of register r11
6868         to eventually allow the register allocator to manage it as an
6869         additional available register.
6870
6871 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
6872
6873         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
6874
6875 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
6876
6877         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
6878         specific trampolines as they are not performance critical as a jump
6879         target (maybe align as before only for AOT code?). This saves about
6880         200 KB of native code on x86 for monodevelop startup.
6881
6882 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
6883
6884         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
6885         monodevelop startup.
6886
6887 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
6888
6889         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
6890
6891         * mini-sparc.h mini-sparc.c: Implement IMT support.
6892
6893         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
6894         its smaller and doesn't clobber sparc_g1.
6895
6896         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
6897
6898 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6899
6900         * mini-ppc.c: optimized the size of the IMT thunks a bit.
6901
6902 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
6903
6904         * mini-ppc.c: implemented fast delegate invocation.
6905
6906 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
6907
6908         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
6909
6910 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6911
6912         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
6913         code to the new style trampoline in preparation for IMT support.
6914
6915 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
6916
6917         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
6918         systems already. This also reduces the specific trampiline sizes and
6919         prepares for the use of r12 as the IMT identifier register.
6920
6921 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6922
6923         * mini-mips.h: endianess fix (simplified from a patch by
6924         Thomas Kunze <thommy@tabao.de>, bug #323737).
6925
6926 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6927
6928         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
6929         to access ucontext fields and enable netbsd support
6930         (partially from Magnus Henoch <mange@freemail.hu>).
6931
6932 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6933
6934         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
6935         use the preprocessor from the CPP env var if it is set.
6936
6937 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6938
6939         * mini-trampolines.c: fixed an assertion and moved it earlier in the
6940         code, before interface_offset gets used.
6941
6942 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
6943
6944         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
6945         mono_class_setup_vtable () before accessing klass->vtable.
6946
6947 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
6948
6949         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
6950         hackish.
6951
6952 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6953
6954         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
6955         IMT slots (this saves hundreds of KB of memory in programs like
6956         IronPython and Monodevelop).
6957
6958 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
6959
6960         * mini.c: print the delegate counter.
6961
6962 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
6963
6964         * mini-x86.c: make it easier to enable the debugging code for IMT
6965         slots.
6966
6967 2007-09-28  Martin Baulig  <martin@ximian.com>
6968
6969         * debug-debugger.h
6970         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
6971         `mono_method_klass_offset' and `mono_method_token_offset'.
6972
6973 2007-09-20  Mark Probst  <mark.probst@gmail.com>
6974
6975         * mini.c: First generics sharing implementation.  Can only share
6976         in very simple cases.  If sharing doesn't work it falls back to
6977         dedicated compilation.
6978
6979         * mini.h: Flag in MonoCompile to specify whether generic
6980         compilation is shared.  Flags enum for marking which generic inst
6981         of a context is used.  Prototypes for helper functions.
6982
6983         * generic-sharing.c: Helper functions for generic method sharing.
6984
6985         * optflags-def.h: Optimization flag (gshared) for enabling generic
6986         method sharing added.
6987
6988         * Makefile.am: generic-sharing.c added.
6989
6990 2007-09-19 Daniel Nauck <dna@mono-project.de>
6991
6992         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
6993
6994 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
6995         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
6996         fixes bug 325507.
6997
6998 2007-09-19  Martin Baulig  <martin@ximian.com>
6999
7000         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
7001         mono_debug_cleanup() is now part of mono_cleanup().
7002
7003 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
7004
7005         * driver.c (mono_main): Fix a warning.
7006
7007 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
7008
7009         * aot-compiler.c: Optimize various parts when processing large assemblies.
7010         Fixes ##325568.
7011
7012         * mini.c (mono_patch_info_hash): Improve hash function.
7013
7014 2007-09-14  Jonathan Chambers <joncham@gmail.com>
7015
7016         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
7017         
7018         Code is contributed under MIT/X11 license.
7019
7020 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
7021
7022         * mini.c (mini_init): Fix a leak.
7023
7024         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
7025
7026 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7027
7028         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
7029
7030 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
7031
7032         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
7033
7034 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
7035
7036         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
7037         variance tests.
7038
7039         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
7040
7041         * mini.c (handle_alloc): Enable managed allocators in AOT code.
7042
7043         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
7044
7045         * aot-runtime.c (decode_patch_info): Ditto.
7046
7047 2007-09-12  Jonathan Chambers <joncham@gmail.com>
7048
7049         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
7050         static case. Cache delegates in architecture specific code, 
7051         based on number of parameters.
7052         
7053         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
7054         in architecture specific code, based on number of parameters.
7055         
7056         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
7057         caching happen in architecture specific code now.
7058         
7059         Code is contributed under MIT/X11 license.
7060
7061 2007-09-12  Jonathan Chambers <joncham@gmail.com>
7062
7063         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
7064         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
7065         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
7066
7067         Code is contributed under MIT/X11 license.
7068
7069 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7070         * mini.c: (mono_thread_abort) Fixed bug #82416.
7071
7072 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
7073
7074         * mini.: hook the new managed GC allocation feature into the JIT.
7075
7076 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7077
7078         * mini.c: implementation for the new runtime tls opcode.
7079
7080 2007-09-11  Martin Baulig  <martin@ximian.com>
7081
7082         * debug-debugger.h
7083         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
7084         `mono_method_inflated_offset'.
7085
7086 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
7087
7088         * driver.c mini.h mini.c: Add a new devel command line option for injecting
7089         async exceptions into a method.
7090
7091         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
7092         purpose of testing whenever the unwinder works at every instruction.
7093
7094 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
7095
7096         * mini.c: check accessibility of method used in ldftn (fixes
7097         bug #82635).
7098
7099 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
7100
7101         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
7102
7103         * inssel.brg: Fix a warning.
7104
7105 2007-09-03  Martin Baulig  <martin@ximian.com>
7106
7107         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
7108         now takes the `main_method' as argument.
7109
7110 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
7111
7112         * cpu-sparc.md (endfilter): Add missing src1:i argument.
7113
7114 2007-08-30  Jonathan Chambers <joncham@gmail.com>
7115
7116         * driver.c: include the cil-coff.h header on Windows.
7117         
7118         Code is contributed under MIT/X11 license.
7119
7120 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7121
7122         * mini.c, driver.c: don't include the cil-coff.h header.
7123
7124 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
7125
7126         * mini.c: flag places that needs fixes fo soft-float support.
7127
7128 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
7129
7130         * mini.h, inssel-float.brg: fix soft-float constant loads on big
7131         endian systems (partially from Dean Jenkins, bug #81924).
7132
7133 2007-08-28  Mark Probst  <mark.probst@gmail.com>
7134
7135         * mini.c (check_linkdemand): Remove embedded reference object in
7136         call to LinkDemandSecurityException.
7137         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
7138         with an IntPtr instead of a reference object.
7139
7140 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
7141
7142         * mini.c (handle_initobj): Handle alignment properly.
7143
7144         * inssel.brg (mini_emit_memset): Ditto. 
7145
7146         * inssel.brg (mini_emit_memcpy): Ditto. 
7147
7148         * inssel-sparc.brg: Ditto.              
7149
7150         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
7151
7152 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
7153
7154         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
7155         exceptions raised in unmanaged code. Fixes part of #82594.
7156
7157 2007-08-24  Mark Probst  <mark.probst@gmail.com>
7158
7159         * mini.c (mono_method_to_ir), declsec.c
7160         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
7161
7162 2007-08-22  Martin Baulig  <martin@ximian.com>
7163
7164         * debug-mini.h
7165         (MonoDebuggerThreadInfo): New typedef.
7166         (mono_debugger_thread_table): New global variable.
7167         (mono_debugger_thread_created): New public function.
7168         (mono_debugger_thread_cleanup): New public function.
7169
7170         * debug-debugger.h
7171         (MonoDebuggerInfo):
7172         - removed `get_current_thread' and `lookup_assembly'.
7173         - removed `data_table'.
7174         - added `thread_table'.
7175
7176         * mini.c
7177         (mono_thread_start_cb): Call mono_debugger_thread_created().
7178         (mono_thread_attach_cb): Likewise.
7179         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
7180         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
7181         initial domain.
7182
7183         * driver.c (mono_main): Move mono_debug_init() up, before calling
7184         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
7185
7186 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7187
7188         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
7189         together when passing several arguments of type double (gives a small
7190         speedup and saves a few bytes of generated code).
7191
7192 2007-08-20  Jb Evain  <jbevain@novell.com>
7193
7194         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
7195
7196 2007-08-20  Jb Evain  <jbevain@novell.com>
7197
7198         * mini.c (mono_method_to_ir): throw MethodAccessException
7199         and FieldAccessException instead of InvalidProgramException.
7200
7201 2007-08-20  Mark Probst  <mark.probst@gmail.com>
7202
7203         * mini.c: CoreCLR security checks.
7204
7205         * mini.h: Removed MonoSecurityMode (moved to
7206         metadata/security-manager.h) and mono_security_mode global var
7207         (replaced by set/get functions in security-manager.h).
7208
7209         * driver.c: Added "core-clr-test" security mode for testing.  Used
7210         set-function for setting security mode.
7211
7212 2007-08-17  Mark Probst  <mark.probst@gmail.com>
7213
7214         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
7215         the new jit_info_table.
7216
7217         * driver.c: Test code for the new jit_info_table (enabled by the
7218         define MONO_JIT_INFO_TABLE_TEST).
7219
7220 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
7221
7222         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
7223         detection of call <REG> instruction sequence. Fixes build on freebsd.
7224
7225 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
7226
7227         * mini-exceptions.c: Fix a warning.
7228
7229 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
7230
7231         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
7232         stack overflow handling code on amd64 too.
7233
7234         * mini-exceptions.c (mono_setup_altstack): Make this use 
7235         mono_thread_get_stack_bounds ().
7236
7237         * mini-x86.h: Disable sigaltstack on solaris x86.
7238
7239 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
7240
7241         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
7242
7243 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
7244
7245         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
7246
7247 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
7248
7249         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
7250
7251         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
7252
7253 2007-08-03  Neale Ferguson <neale@sinenomine.net>
7254
7255         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
7256         due to alignment.
7257
7258 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7259
7260         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
7261         to be emitted (bug #82281).
7262
7263 2007-08-01  Martin Baulig  <martin@ximian.com>
7264
7265         Merged the `debugger-dublin' branch.
7266
7267         * debug-debugger.h (MonoDebuggerInfo):
7268         Removed the `old_*' compatibility entries.
7269         Added `debugger_version' and `data_table'.
7270         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
7271         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
7272
7273         * debug-mini.c
7274         (MiniDebugMethodBreakpointInfo): Add `address_list'.
7275         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
7276         instead of a `gconstpointer'.
7277         (mono_debugger_insert_method_breakpoint): Return a
7278         `MonoDebugMethodAddressList *'.
7279
7280 2007-06-28  Martin Baulig  <martin@ximian.com>
7281
7282         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7283
7284 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
7285
7286         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
7287         __builtin_frame_address () since it is broken on older gcc versions.
7288
7289 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
7290
7291         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
7292         on the stack overflow handling and made the managed stack overflows
7293         catchable in most cases using soft guard pages.
7294         * exceptions-x86.c: added code to restore the protection in the soft
7295         guard pages at the end of exception handling.
7296
7297 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
7298
7299         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
7300
7301 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7302
7303         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
7304         exception handling.
7305
7306 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7307
7308         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
7309         signal handling support until it has been ported to the new mechanism.
7310         * mini.c: fixed stack overflow detection and use the new
7311         architecture code  to handle signals on the altstack.
7312
7313 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
7314
7315         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
7316         stack overflows on the alt stack.
7317
7318 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
7319
7320         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
7321         stack overflows on the alt stack.
7322
7323 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
7324
7325         * exceptions-ppc.c: cleanup preparing for altstack support.
7326
7327 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7328
7329         * exceptions-arm.c: cleanup preparing for altstack support.
7330
7331 2007-07-27  Mark Probst  <mark.probst@gmail.com>
7332
7333         * mini.c (print_jit_stats): Output hazard pointer stats.
7334
7335 2007-07-26  Mark Probst  <mark.probst@gmail.com>
7336
7337         * driver.c, mini.c: Replaced security mode flags with a single
7338         enum variable.
7339
7340 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7341
7342         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
7343
7344 2007-07-25  Mark Probst  <mark.probst@gmail.com>
7345
7346         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
7347         (which doesn't do anything yet) for activating Core CLR
7348         (Silverlight) security.
7349
7350 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
7351
7352         * mini-codegen.c: work around a possible gcc bug on arm.
7353
7354 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
7355
7356         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
7357         message for platforms that don't support AOT compilation.
7358
7359 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
7360
7361         * mini.h, mini.c, driver.c: temporary smcs hack.
7362
7363 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
7364
7365         * mini-arm.h, mini-arm.c: arm EABI fixes.
7366
7367 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
7368
7369         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
7370         case.
7371
7372         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
7373         trampolines taking a method argument.
7374
7375         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
7376
7377         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
7378         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
7379
7380         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
7381         JIT compilation throws an exception. Fixes #82050.
7382
7383 2007-07-19  Mark Probst  <mark.probst@gmail.com>
7384
7385         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
7386         with the MONO_EXCEPTION_ defines.
7387
7388 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
7389
7390         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
7391         #82117.
7392         
7393         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
7394         the cause of an assertion.
7395
7396 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
7397
7398         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
7399         removed.
7400
7401 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
7402
7403         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
7404         assert. Should fix #82103.
7405
7406 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
7407
7408         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
7409         here too. Fixes #82095.
7410
7411         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
7412         addresses.
7413
7414         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
7415
7416         * mini-amd64.h: Enable IMT for amd64.
7417         
7418         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
7419
7420 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
7421
7422         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
7423
7424 2007-07-12  Mark Probst  <mark.probst@gmail.com>
7425
7426         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
7427         as soon as check_linkdemand sets an exception_type.
7428
7429 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7430
7431         * mini-x86.c: fixed offsets for IMT call sequence.
7432         * mini-x86.h: enable IMT again.
7433
7434 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7435
7436         * trace.c (mono_trace_enter_method): Decode MonoType too.
7437
7438         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
7439
7440         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
7441
7442         * mini-amd64.c: Add preliminary IMT implementation.
7443         
7444 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
7445
7446         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
7447         understand the new IMT-base interface invocation (thanks to
7448         Daniel Nauck for the report and the remote debugging session).
7449
7450 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
7451
7452         * mini-x86.c: size and speed optimizations for the IMT bsearch.
7453
7454 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7455
7456         * Makefile.am (aotcheck): Make this actually use the AOTed code.
7457
7458 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
7459
7460         * mini-trampolines.c: implement AOT IMT support.
7461         * mini-x86.h: enable IMT support for wider testing.
7462
7463 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7464
7465         * inssel.brg (emit_imt_argument): Add aot support here.
7466
7467         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
7468
7469 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
7470
7471         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
7472         of the IMT implementation, partially from massi, with my
7473         implementation of the bsearch sequence. Disabled by default until
7474         the AOT code is implemented.
7475
7476 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7477
7478         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
7479
7480         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
7481
7482 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7483
7484         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
7485         arch-independent IMT JIT code from Massimiliano
7486         Mantione (massi@ximian.com) with small cleanups from me.
7487
7488 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7489
7490         * Makefile.am: fix svn invocation to get the svn revision to be
7491         independent of the local language (build fix).
7492
7493 2007-07-09  Mark Probst  <mark.probst@gmail.com>
7494
7495         * mini.c (inline_method): Reset cfg->exception_type if the
7496         inlining is aborted.  Fixes: 82049.
7497
7498 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
7499
7500         * mini.c: remove assert from exception handling code when exception_ptr
7501         is not set.
7502
7503 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7504
7505         * mini.c (mono_codegen): Add an assert.
7506
7507         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
7508         enter and leave code.
7509         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
7510
7511 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7512
7513         * mini-ppc.c: fixed memory corruption for localloc(0)
7514         (bug #81852).
7515
7516 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7517         
7518         * mini.c: Fix warnings.
7519
7520 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
7521
7522         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
7523         to emit better double->int conversions.
7524
7525 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7526
7527         * mini.c: the provided Min/Max optimizations are valid for unisgned
7528         ints.
7529
7530 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
7531
7532         * 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
7533
7534 2007-06-28  Miguel de Icaza  <miguel@novell.com>
7535
7536         * mini.c (mono_running_on_valgrind): Add support for reporting the
7537         method and  its boundaries to valgrind.
7538
7539 2007-06-28  Martin Baulig  <martin@ximian.com>
7540
7541         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7542
7543 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
7544
7545         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
7546
7547         * generic.2.cs: Add new test case.
7548
7549 2007-06-25  Martin Baulig  <martin@ximian.com>
7550
7551         Merged the `debugger-dublin' branch.
7552
7553         * debug-mini.c
7554         (mono_debugger_insert_method_breakpoint): New public method.
7555         (mono_debugger_remove_method_breakpoint): Likewise.
7556         (mono_debugger_check_breakpoints): New static method.
7557         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
7558
7559         * debug-debugger.h (MonoDebuggerInfo):
7560         Renamed (to keep backward compatibility in the vtable):
7561         `insert_breakpoint' -> `old_insert_breakpoint'.
7562         `remove_breakpoint' -> `old_remove_breakpoint'.
7563         `create_string' -> `old_create_string'.
7564         `lookup_class' -> `old_lookup_class'.
7565         `lookup_type' -> removed; changed into a dummy field.
7566         `lookup_assembly' -> `old_lookup_assembly'.
7567         Added (same functionality, but different signature):
7568         `create_string', `lookup_class', `lookup_assembly'
7569         Added new:
7570         `get_method_addr_or_bpt', `remove_method_breakpoint',
7571         `runtime_class_init'.
7572
7573         * debug-debugger.c: Merged the `debugger-dublin' branch.
7574
7575 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
7576
7577         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
7578         well.
7579         (peephole_pass): Likewise.
7580
7581 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
7582
7583         * driver.c: hopefully make setaffinity work also for ancient
7584         versions of linux.
7585
7586 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
7587
7588         * driver.c : win32 build fix.
7589
7590 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
7591
7592         * driver.c: check for the MONO_NO_SMP env var and bind to a single
7593         processor if it is set.
7594
7595 2007-06-21  Martin Baulig  <martin@ximian.com>
7596
7597         * debug-mini.h: New file.
7598
7599         * debug-mini.c
7600         (mono_debugger_insert_breakpoint_full): Moved here from
7601         ../metadata/mono-debug-debugger.c.
7602         (mono_debugger_remove_breakpoint): Likewise.
7603         (mono_debugger_breakpoint_callback): Likewise.
7604
7605 2007-06-15  Raja R Harinath  <rharinath@novell.com>
7606
7607         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7608         changes in MonoGenericClass.
7609
7610 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
7611
7612         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
7613
7614 2007-06-14  Raja R Harinath  <rharinath@novell.com>
7615
7616         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7617         removal of MonoGenericMethod.
7618
7619 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7620
7621         * mini-exceptions.c: hooks for the exception events profiling API.
7622
7623 2007-06-14  Randolph Chung  <tausq@debian.org>
7624
7625         * Makefile.ma: Add hppa target.
7626         * mini-arch.h: Include mini-hppa.h
7627         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
7628         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
7629         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7630
7631 2007-06-14  Randolph Chung  <tausq@debian.org>
7632
7633         * inssel.brg: Add rules for "chained" compare-branch operations so that
7634         a single compare op can affect multiple branches.  Adjust cost for
7635         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
7636         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
7637         cost for some rules so that they can more easily be overridden by
7638         per-arch rules (with fixes from lupus).
7639         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7640
7641 2007-06-13  Randolph Chung  <tausq@debian.org>
7642
7643         * mini-ops.h: Reorder branch ops so that they match the order of the
7644         corresponding CEE_* ops.  The code expects them this way.
7645         Add new ops for HPPA target.
7646         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7647
7648 2007-06-13  Randolph Chung  <tausq@debian.org>
7649
7650         * mini-exceptions.c: Handle cases where the stack grows towards
7651         larger addresses.
7652         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7653
7654 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7655
7656         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
7657         counter.
7658         * driver.c: explain where a non-matching corlib is found.
7659
7660 2007-06-13  Mark Probst  <mark.probst@gmail.com>
7661
7662         * mini.c (print_jit_stats): Output dynamic code allocation stats.
7663
7664 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
7665
7666         * mini-exceptions.c: Generate a method profile leave event during
7667         an exception to ensure that the profiler gets notified.
7668
7669 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
7670
7671         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
7672         branch.
7673
7674         * cpu-amd64.md: Add long_and/or/xor opcodes.
7675
7676 2007-06-06  Wade Berrier  <wberrier@novell.com>
7677
7678         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
7679         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
7680         length of instruction shr_imm (expected 8, got 10)
7681
7682 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
7683
7684         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
7685
7686 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7687
7688         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7689         MonoInternalHashTable again (fixed bug in the internal hash table
7690         code).
7691
7692 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7693
7694         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
7695         Have to figure out what makes it crash the SWF regression.
7696
7697 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
7698
7699         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
7700
7701 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7702
7703         * mini.c: optimize out the type check when storing null in a
7704         reference array.
7705
7706 2007-06-04  Mark Probst  <mark.probst@gmail.com>
7707
7708         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7709         MonoInternalHashTable.
7710
7711 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
7712
7713         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
7714         signed integer methods.
7715
7716 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7717
7718         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
7719         permanently since the current approach doesn't work.
7720
7721 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7722
7723         * inssel.brg (stmt): Only call delegate->invoke_impl if 
7724         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
7725
7726 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7727
7728         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
7729         the sreg2==rdx case.
7730         
7731         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
7732         account if it contains a rex prefix.
7733         (peephole_pass): Handle OP_FMOVE as well.
7734
7735 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7736
7737         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
7738         as it causes regressions.
7739
7740 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
7741
7742         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
7743         static case as well.
7744
7745         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
7746
7747         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7748         (mono_arch_get_this_arg_from_call): Ditto.
7749
7750         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
7751
7752         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
7753         invoke_impl field.
7754
7755         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7756         (mono_arch_get_this_arg_from_call): Ditto.
7757
7758         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
7759         
7760         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
7761         try to create optimized invoke code and use that for further invocations. 
7762         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
7763
7764         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
7765
7766 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
7767
7768         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
7769         sealed classes or methods.
7770         *devirtualization.cs: tests for the new optimization
7771
7772 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
7773
7774         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
7775         by the update_volatile () function.
7776
7777 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
7778
7779         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
7780         require it.
7781
7782         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
7783
7784 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
7785
7786         * mini.c: Add configure checks for header files.
7787         * mini-x86.c: Add configure checks for header files.
7788         * trace.c: Add configure checks for header files.
7789         * aot-runtime.c: Add configure checks for header files.
7790         * aot-compiler.c: Add configure checks for header files.
7791         * driver.c: Add configure checks for header files.
7792         * mini-codegen.c: Add configure checks for header files.
7793         
7794         Code is contributed under MIT/X11 license.
7795
7796 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
7797
7798         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
7799         icompare_imm -128 + op_iclt. Fixes #81703.
7800
7801 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
7802
7803         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
7804
7805 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7806
7807         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
7808         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
7809         so that all isinst checks now use "interface_bitmap".
7810
7811 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
7812
7813         * cpu-amd64.md (jmp): Fix a warning.
7814
7815         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
7816
7817         * basic.cs: Add new regression test.
7818
7819         * basic.cs: Remove test which is now in basic-long.cs.
7820
7821         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
7822
7823         * basic-long.cs: Add new test.
7824         
7825 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
7826
7827         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
7828
7829 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
7830
7831         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
7832
7833         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
7834         places.
7835         
7836         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
7837         throwing code a bit.
7838
7839         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
7840         the exception throwing code a bit.
7841
7842         * mini-x86.c (get_call_info): Allocate result from a mempool.
7843
7844 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
7845
7846         * aot-compiler.c (find_typespec_for_class): Fix the assert.
7847
7848         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
7849
7850         * mini.h (MonoCompile): Add 'token_info_hash' field.
7851
7852         * mini.c: Save token->method associations during compilation so the AOT 
7853         compiler can use it.
7854         
7855         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
7856         which reference generic classes and methods.
7857
7858 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
7859
7860         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
7861
7862         * aot-compiler.c (compile_method): Fix a typo in a comment.
7863
7864         * aot-runtime.c (decode_cached_class_info): Skip generic types.
7865
7866         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
7867         everything generic.
7868
7869         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
7870
7871 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
7872
7873         * mini.h (MonoCompile): Add 'args' field.
7874
7875         * mini.c (mono_compile_create_vars): Store variables representing the arguments
7876         into cfg->args.
7877
7878         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
7879
7880 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
7881
7882         * mini.c (mono_compile_get_interface_var): Remove this unused function.
7883
7884         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
7885
7886         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
7887         opcodes for some opcodes.
7888
7889         * mini.h *.brg *.c: Use the new opcodes.
7890
7891 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
7892
7893         * mini.h: Bumped aot revision.
7894
7895         * inssel.brg: modified code generation of type checks for interfaces
7896         to use the new "MonoClass.interface_bitmap" instead of the old
7897         "MonoClass.interface_offsets".
7898
7899 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
7900
7901         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
7902
7903 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
7904
7905         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
7906         64 bit platforms.
7907
7908 2007-04-27  Neale Ferguson <neale@sinenomine.net>
7909
7910         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
7911
7912 2007-04-27  Wade Berrier  <wberrier@novell.com>
7913
7914         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
7915         mini.h) to fix build.
7916
7917 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
7918
7919         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
7920         
7921         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
7922         causes the corlib unit tests to fail.
7923
7924 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
7925
7926         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
7927
7928         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
7929
7930         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
7931         opcodes to the comparison relations.
7932
7933         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
7934         opcodes to their types.
7935         
7936         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
7937
7938         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
7939         it in cfg->arch.cinfo.
7940
7941         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
7942
7943         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
7944         cfg->cil_offset_to_bb.
7945
7946 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
7947
7948         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
7949         created becase of initlocals.
7950
7951 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
7952
7953         * mini-alpha.c cpu-alpha.md: More alpha port work from 
7954         Sergey Tikhonov <tsv@solvo.ru>.
7955
7956 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
7957
7958         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
7959
7960 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
7961
7962         * cpu-s390.md (break): Correct the length of break instruction.
7963
7964 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7965
7966         * mini.c: fix a couple of soft-float issues and comments.
7967
7968 2007-04-15  Miguel de Icaza  <miguel@novell.com>
7969
7970         * trace.c (is_filenamechar): - is also a filename char.
7971
7972 2007-04-15  Neale Ferguson <neale@sinenomine.net>
7973
7974         * mini-s390.c: Correct checking for enum type in return value processing.
7975
7976 2007-04-14  Raja R Harinath  <rharinath@novell.com>
7977
7978         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
7979         (version.h): Makefile is in the build directory.
7980
7981 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
7982
7983         * mini-amd64.h: fix for assertion failure on Solaris/amd64
7984
7985 2007-04-11  Martin Baulig  <martin@ximian.com>
7986
7987         * mini.c (can_access_member): Fix handling of generic classes;
7988         fixes #81259.
7989
7990 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
7991
7992         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
7993
7994 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
7995
7996         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
7997
7998 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
7999
8000         * mini-codegen.c: make sure the right spill amount is
8001         used for fp or integer registers (fixes the float_sub_spill() on ppc).
8002
8003 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
8004
8005         * mini-ppc.c: fixes for the fp_branch_nan test.
8006
8007 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
8008
8009         * basic.cs: Comment out new test which still fails on ia64.
8010
8011 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8012
8013         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
8014
8015 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8016
8017         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
8018
8019 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
8020
8021         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
8022         on 64 bit machines. Fixes part of #80738.
8023
8024         * basic.cs: Add regression test.
8025
8026 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
8027
8028         * inssel.brg basic.cs: Revert previous change to fix build.
8029
8030         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
8031         platforms.
8032         
8033         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
8034
8035         * basic.cs: Add new regression test.
8036
8037 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
8038
8039         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
8040         many arguments.
8041
8042 2007-03-16  Neale Ferguson <neale@sinenomine.net>
8043
8044         * cpu-s390x.md: Correct length of break instruction.
8045
8046 2007-03-16  Neale Ferguson <neale@sinenomine.net>
8047
8048         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
8049         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
8050
8051 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
8052
8053         * *.c: Begin WIN64 port.
8054         * mini.c:  Use correct register in profiler.
8055         * mini-amd64.c: No inline assembly on Win64.
8056         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
8057         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
8058         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
8059         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
8060         mono_arch_ip_from_context for Win64.
8061         
8062         Contributed under MIT/X11 license.
8063
8064 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
8065
8066         * exceptions-amd64.c (seh_handler): Ditto.
8067
8068         * exceptions-x86.c (seh_handler): Fix a memory leak.
8069
8070 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
8071
8072         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
8073         mini-s390x.c: fixed peephole optimizations to deal
8074         correctly with 1 and 2 byte reload avoidance.
8075
8076 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
8077
8078         * cpu-s390.md, cpu-s390x.md: update localloc length.
8079
8080 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8081
8082         * cpu-g4.md: added missing descriptions.
8083
8084 2007-03-14  Miguel de Icaza  <miguel@novell.com>
8085
8086         *  Makefile.am: Add support so the tail tests are not executed on
8087         PowerPC as that is a known limitation of the PowerPC port.
8088
8089 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
8090
8091         * runmdesc.bat:  Move to msvc directory.
8092         
8093 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
8094
8095         * runmdesc.bat:  Run executable that was produced by the current
8096         target and sent via an argument.
8097         
8098 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
8099
8100         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
8101         #81102.
8102
8103         * generics.2.cs: Add regression test.
8104
8105 2007-03-09  Wade berrier  <wberrier@novell.com>
8106
8107         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
8108
8109 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
8110
8111         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
8112         AOT code depends on this.
8113
8114 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
8115
8116         * mini.c: more precise tracking of types in the eval stack
8117         (part of fix for bug #81044).
8118
8119 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
8120
8121         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
8122
8123         * aot-compiler.c (encode_patch): Remove an obsolete comment.
8124
8125 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
8126
8127         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
8128
8129         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
8130
8131 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
8132
8133         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
8134         a pointer on 64 bit systems. Fixes #80190.
8135
8136         * iltests.il: Add new regression test.
8137
8138 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8139
8140         * mini.c: inline a constant for Environment.IsRunningOnWindows.
8141
8142 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
8143
8144         * trace.c: Remove an erroneous alignemnt check when tracing.
8145           Fixes --trace on OSX86.
8146
8147 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8148
8149         * mini-$(arch).h: initialize SP in context for all the archs.
8150
8151 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
8152
8153         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
8154         regressions in the thread tests.
8155
8156 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
8157
8158         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
8159         - fixed implementation of LOCALLOC opcode
8160         - implemented non-un compare for floats
8161         - code cleanup
8162         - implementation of FDIV and CKFINITE opcodes
8163         - fixes for latest mono updates
8164         - additional arch opcodes
8165
8166 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8167
8168         * Makefile.am: simplify and merge rules for cross-compilation.
8169
8170 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
8171
8172         * local-propagation.c: Actually *apply* the fix for bug 80591...
8173
8174 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8175
8176         * mini-exceptions.c: backuot part of the last change
8177         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
8178
8179 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
8180         * inssel.brg: Fix bug 59286.
8181
8182
8183 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
8184
8185         * mini-exceptions.c: patch from Zoltan to correctly check for
8186         stack boundaries (using the stack register, not the frame register),
8187         fixes bugs #80724, #79717.
8188
8189 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
8190
8191         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
8192         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
8193
8194         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
8195         presence of frame pointer elimination.
8196
8197 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
8198         
8199         * mini-x86.h: NetBSD UCONTEX_REG defines.
8200
8201 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
8202
8203         * inssel-amd64.brg: Fix amd64 build.
8204
8205 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
8206
8207         * mini.h: remove extern to workaround what looks likes gcc bug 26905
8208         on amd64.
8209
8210 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
8211
8212         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
8213         ends.
8214
8215         * mini-<ARCH>.c: Use mono_is_regsize_var ().
8216
8217 2007-01-30 Mark Mason <mason@broadcom.com>
8218
8219            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
8220            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
8221            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
8222            beginning support for CEE_JMP [not quite working yet]
8223            * tramp-mips.c: LMF handling now works
8224         
8225 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
8226
8227         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
8228
8229         * mini.h (NULLIFY_INS): New macro.
8230
8231 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8232
8233         * mini.c: statistical profiler fix for windows, patch
8234         from Tor Lillqvist (tml@novell.com).
8235
8236 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
8237         * local-propagation.c: Fix bug 80591.
8238
8239 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8240
8241         * Makefile.am: put back the --export-dynamic option as with
8242         the previous gmodule flags (thanks to Robert Jordan).
8243
8244 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
8245
8246         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
8247
8248         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
8249         simplify and speed up the local register allocator. Also rename some fields
8250         like iassign->vassign.
8251         
8252         * regalloc.c: Remove some functions which are no longer used since their
8253         inlined version is in mini-codegen.c.
8254         
8255         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
8256
8257         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
8258
8259 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
8260
8261         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
8262         narrowing. Fixes #80622.
8263
8264         * iltests.il: Add new regresssion test. 
8265
8266 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8267
8268         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
8269         debug-debugger.c, debug-debugger.h: warning fixes.
8270         * driver.c: updated copyright year and made it fit in one line.
8271
8272 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
8273
8274         * aot-runtime.c: updated to use mono-dl instead of gmodule.
8275
8276 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
8277
8278         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
8279
8280         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
8281
8282         * iltests.il: Add new test for bug #80507.
8283
8284 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8285
8286         * mini-arm.h: use soft-float also on vfp for now.
8287
8288 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8289
8290         * mini.c: fix some more soft-float issues.
8291
8292 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
8293
8294         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
8295
8296 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
8297         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
8298         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
8299         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
8300
8301 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
8302
8303         * mini-arm.c: typo fix.
8304
8305 2007-01-23  Neale Ferguson <neale@sinenomine.net>
8306
8307         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
8308
8309 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
8310
8311         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
8312         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
8313
8314         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
8315
8316         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
8317
8318         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
8319         
8320         * inssel.brg: Fix a warning.
8321
8322         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
8323
8324         * abcremoval.c ssa.c ssapre.c: Update after this change.
8325         
8326         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
8327
8328         * dominators.c (df_set): Use mono_bitset_union_fast.    
8329
8330 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8331
8332         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
8333         mini-codegen.c: reduce relocations and memory usage for the cpu
8334         description.
8335
8336 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
8337
8338         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
8339
8340         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
8341         to reduce their size.
8342
8343 2007-01-19 Mark Mason <mason@broadcom.com>
8344
8345         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
8346         * mini-mips.c: more configuration macros, support long conditional branches, additional
8347         asserts, fix epilog instrumentation.
8348         * mini-mips.h: use standard stack walk
8349         * cpu-mips.md: increase size of div, rem and conditional branches
8350         
8351 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
8352
8353         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
8354         to cpu spec data.
8355
8356 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
8357
8358         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
8359         (compile_method): Ditto.
8360
8361         * aot-runtime.c (decode_klass_info): Ditto.
8362
8363         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
8364         needed by the code generated by inssel.brg. Also fix a warning.
8365
8366 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
8367
8368         * mini.c: deal with enums that become genericinsts by
8369         being nested in a generic class (bug #79956).
8370
8371 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8372
8373         * mini.c: match the generic definition to check for
8374         private access with generic types (bug #78431).
8375
8376 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
8377
8378         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
8379         to make life easier for people cross-compiling that insist on not
8380         using scratchbox.
8381
8382 2007-01-17 Mark Mason <mason@broadcom.com>
8383
8384         * inssel-long.brg: patch to deal with mips missing flags
8385         * inssel-long32-mips.brg: implement overflow checks
8386         * insset-mips.brg: implement overflow checks
8387         * mini-mips.h: implement conditional exception handling
8388         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
8389           Remove unused code, minor cleanups.
8390         * exceptions-mips.c: minor cleanups
8391         * mini-ops.h: add mips conditional exception ops
8392         * cpu-mips.md: add mips conditional exception ops
8393
8394         
8395 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8396
8397         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
8398         to deal with mips missing of flags.
8399
8400 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8401
8402         * exceptions-ppc.c: execute fault handlers.
8403
8404 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
8405
8406         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
8407
8408 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
8409
8410         * mini.c: handle also floating point values in initialize_array.
8411
8412 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8413
8414         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
8415         array initialization and make it conditional on the intrins option.
8416
8417 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8418
8419         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
8420         relocations and put the patch info names close to the enum definition.
8421
8422 2007-01-15 Mark Mason <mason@broadcom.com>
8423
8424         * basic.cs, exceptions.cs: break up large tests to increase debugability.
8425
8426 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8427
8428         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
8429
8430 2007-01-12  Raja R Harinath  <rharinath@novell.com>
8431
8432         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
8433
8434 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
8435
8436         * Makefile.am: distribute the mips sources.
8437
8438 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8439
8440         * mini-codegen.h: handle bug #80489 here, by excluding ecx
8441         directly.
8442
8443 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
8444
8445         * cpu-x86.md: back out for now as this triggers other regressions.
8446
8447 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8448
8449         * cpu-x86.md: force src1 and dest regpair for long shift instructions
8450         to eax:edx, so ecx can't get allocated to them (bug #80489).
8451
8452 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
8453
8454         * mini.c, mini-exceptions.c: enabled running fault handlers
8455         (bug #80469).
8456
8457 2007-01-03  Miguel de Icaza  <miguel@novell.com>
8458
8459         * driver.c: If nothing fail, do not use the string "failed",
8460         because it makes it very annoying to view test result logs on the
8461         web. 
8462
8463 2006-12-30  Miguel de Icaza  <miguel@novell.com>
8464
8465         * debug-debugger.c (mono_debugger_main): Rename "main" to
8466         "main_method" to prevent a warning.
8467
8468         Remove a warning for unused field.
8469
8470 2006-12-28  Martin Baulig  <martin@ximian.com>
8471
8472         * debug-debugger.c
8473         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
8474
8475 2006-12-22  Martin Baulig  <martin@ximian.com>
8476
8477         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
8478         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
8479         seperate `.mdb_debug_info' section, so we can access it from the
8480         debugger even if the binary is stripped.
8481
8482         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
8483         from the `.mdb_debug_info' here to prevent the linker from
8484         removing that section.
8485
8486         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
8487         mdb-debug-info64.s.
8488
8489 2006-12-19  Robert Jordan  <robertj@gmx.net>
8490
8491         * mini-x86: enable the code to return small structures in
8492         registers for FreeBSD as well. Fixes bug #80278.
8493         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
8494
8495 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8496
8497         * mini-x86.c: align the stack when calling the profiler
8498         function instrumenting the prolog (on OSX).
8499
8500 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
8501
8502         * mini.c: emit a break opcode where Debugger.Break () is called.
8503
8504 2006-12-13  Miguel de Icaza  <miguel@novell.com>
8505
8506         * mini.c (mono_method_to_ir): Provide useful information on this
8507         assert, to prevent others from debugging like I did.
8508
8509 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8510
8511         * mini.c: enable code which was incorrectly commented
8512         (bug #80235).
8513
8514 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8515
8516         * mini-x86.c: enable on OSX, too, the code to return small
8517         structures in registers.
8518
8519 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
8520
8521         * mini-x86.c: remove the use of the dynamic code manager here, too.
8522
8523 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
8524
8525         * mini.h, debug-debugger.c, tramp-*.c: fixed 
8526         mono_debugger_create_notification_function() to use
8527         mono_global_codeman_reserve () instead of a dynamic code manager.
8528
8529 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
8530
8531         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
8532         ves_array_element_address() jit icall and use a generated
8533         managed method instead (which is about 4 times faster for a rank 3
8534         array access).
8535
8536 2006-11-29  Mark Mason  <mason@broadcom.com>
8537
8538         * basic-calls.cs: additional tests for passing
8539         structures as function arguments.
8540
8541 2006-11-29  Mark Mason  <mason@broadcom.com>
8542
8543         * mini-mips.h: disable custom exception handling
8544         * mini-mips.c: throw/rethrow should use jalr to call
8545         exception stubs.  Fixed bug with passing structures
8546         by value. More support for tracing floating point
8547         functions.
8548
8549 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8550
8551         * mini.c: fixed typo in the soft-float ldind.r4 handling
8552         (bug #80086).
8553
8554 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8555
8556         * mini.c, mini.h, driver.c: added --runtime command line
8557         option to select a different runtime than the autodetected one.
8558         * jit.h: added API for embedders to initialize with a specific
8559         runtime version.
8560
8561 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
8562
8563         * mini.c: handle also boxing of r4 values (bug #80024).
8564
8565 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
8566
8567         * mini-ppc.c: force indirect calls until we reserve
8568         enough address space for all the generated code.
8569
8570 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
8571
8572         * exceptions-arm.c: workaround bugs in the libc definition
8573         of struct ucontext.
8574
8575 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
8576
8577         * inssel.brg: fixes from me and Mark Mason.
8578
8579 2006-11-23  Dick Porter  <dick@ximian.com>
8580
8581         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
8582         semaphore display now we've fixed the initial value
8583
8584 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8585
8586         * inssel.brg: partially revert the last change to fix the build.
8587
8588 2006-11-21  Mark Mason  <mason@broadcom.com>
8589
8590         * inssel.brg: Add and use compare-and-branch macros to support
8591         architectures that do not have condition code registers (ie. MIPS).
8592         * *-mips.{c,brg,md}: Fix copyright statements
8593
8594 2006-11-20  Mark Mason  <mason@broadcom.com>
8595
8596         * Makefile.am: remove mini-codegen.c from list of MIPS sources
8597         * mini.c: Allow GET_CONTEXT to be specified by the arch port
8598         * mini.h: Added declaration for mono_print_ins()
8599         * mini-codegen.c: added ins_spec initializer for MIPS
8600         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
8601         vreg to be virtual and hreg to be non-virtual.
8602         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
8603         is not yet working/implemented correctly.
8604         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
8605         non-static, fixup calls to print_ins() from other parts in the file.
8606
8607 2006-11-20  Mark Mason  <mason@broadcom.com>
8608
8609         * basic-calls.cs: added tests for passing structures as arguments
8610         to calls.
8611
8612 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
8613
8614         * inssel-long32.brg: optimize signed division by power of two.
8615
8616 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
8617
8618         * mini-arm.c: added support for interworking with thumb code
8619         (mono must be still be built using the ARM instruction encoding).
8620
8621 2006-11-19  Miguel de Icaza  <miguel@novell.com>
8622
8623         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
8624         verifier has different rules for it.   Fixes a few verifier issues
8625         in the test suite.
8626
8627         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
8628         at the end, so people know what happened.
8629
8630 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
8631
8632         * brach-opts.c: in optimize_exception_target() make sure we
8633         are in a catch clause (fixes bug #79871).
8634
8635 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8636
8637         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
8638         more soft-float support fixes.
8639
8640 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
8641
8642         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
8643         that are passed half on the stack and half in registers.
8644
8645 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
8646
8647         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
8648         more mips integration work from Mark E Mason 
8649         <mark.e.mason@broadcom.com>.
8650
8651 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8652
8653         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
8654         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
8655         tramp-mips.c: added sources for the mips port, not
8656         integrated in the build yet. Contributed by
8657         Mark E Mason <mark.e.mason@broadcom.com>.
8658
8659 2006-11-14  Neale Ferguson <neale@sinenomine.net>
8660
8661         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
8662
8663 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8664
8665         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
8666         put the soft-float rules in its own file since it seems to
8667         break s390 compilation.
8668
8669 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8670
8671         * mini-arm.c: fixed wrnings.
8672
8673 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
8674
8675         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
8676         inssel-arm.brg: ARM support for soft-float.
8677
8678 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8679
8680         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
8681         loads and stores of 32 bit fp values.
8682
8683 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
8684
8685         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
8686
8687         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
8688         works. Fixes #79852 and #79463.
8689
8690 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8691
8692         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
8693         more soft-float support WIP and fixes.
8694
8695 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
8696
8697         * mini-arm.c: some VFP updates.
8698
8699 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
8700
8701         * mini-exceptions.c: 0 is a valid local var offset in some
8702         architectures, don't assert (bug #78508).
8703
8704 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
8705
8706         * exceptions-arm.c: fixed off by one error in stack walk code.
8707
8708 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
8709
8710         * mini.h, mini.c: more precise tracking of type load exceptions.
8711
8712 2006-11-03  Robert Jordan  <robertj@gmx.net>
8713
8714         * Makefile.am: [WIN32] Add monow.exe target.
8715         * driver.c: [WIN32] Don't detach the console when debugging.
8716         Fixes bug #79797.
8717         
8718 2006-10-30  Miguel de Icaza  <miguel@novell.com>
8719
8720         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
8721
8722 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
8723
8724         * aot-compiler.c (emit_method_info): Add a case missed earlier.
8725
8726         * driver.c (mini_regression): Fix --regression with AOT.
8727
8728         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
8729
8730 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
8731
8732         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
8733
8734         * mini-sparc.h: Don't use sigaction on sparc/linux.
8735
8736         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
8737
8738         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
8739
8740         * mini-exceptions.c: Add proper include files for getpid ().
8741
8742 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
8743
8744         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
8745         address instead of a MonoJitInfo* to avoid decoding the exception info for the
8746         method.
8747
8748         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
8749         name cache to reduce its size.
8750
8751         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8752
8753 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
8754
8755         * mini-x86.c: Save/restore the current LMF structure more efficiently using
8756         the mono_lmf TLS variable.
8757
8758         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
8759         trampoline lmf frames.  
8760
8761         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
8762
8763 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
8764
8765         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
8766         the mono_lmf TLS variable.
8767
8768         * mini-exceptions.c: Access the LMF structure through accessors.
8769
8770         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
8771         variable instead of in jit_tls->lmf.
8772
8773         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
8774         
8775         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
8776         trampoline lmf frames.
8777
8778         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
8779
8780 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
8781
8782        * mini.c trace.c mini-x86.c: Revert these too.
8783         
8784        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
8785        signature change.
8786
8787 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
8788
8789         * genmdesc.c: removed now dead code.
8790
8791 2006-10-09  Robert Jordan <robertj@gmx.net>
8792
8793         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
8794
8795 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
8796
8797         * mini.h: do not leave gaps in the opcode values.
8798
8799 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
8800
8801         * jit-icalls.h: flag functions as internal here, too.
8802
8803 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
8804
8805         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
8806         functions with the internal attribute.
8807
8808 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
8809
8810         * aot-compiler.c: fclose the file descriptor in the profile read loop.
8811
8812 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
8813
8814         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
8815         for soft-float.
8816
8817 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
8818
8819         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
8820         tail calls as on other platforms.
8821
8822         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
8823
8824         * iltests.il: Add a few tailcall tests.
8825
8826 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8827
8828         * driver.c: fix loop for old compilers (bug #79521).
8829
8830 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
8831
8832         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
8833
8834         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
8835
8836         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
8837         metadata without any code.
8838
8839         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
8840         more precise debugging information using gdb.
8841
8842 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
8843
8844         * inssel-ia64.brg: Make the helper methods static.
8845
8846 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8847
8848         * inssel-x86.brg: make the helper methods static.
8849
8850 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
8851
8852         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
8853
8854 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8855
8856         * mini.c: updates for monoburg changes.
8857         * inssel.brg: make a few helper functions static as they should.
8858
8859 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
8860
8861         * Makefile.am: Move mini-codegen.c to common_sources.
8862
8863 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8864
8865         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
8866         instructions.
8867         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
8868         mini-ppc.h: port to use the common local register allocator.
8869
8870 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8871
8872         * mini.h: Remove the comment too then.
8873
8874 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
8875
8876         * mini.h: put back backend.data which is to be used shortly and
8877         doesn't increase the size of MonoInst. If any 64 bit arch aligned
8878         pointers on 4 byte boundaries it'd have much bigger issues running
8879         and you can ifdef it out anyway.
8880
8881 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8882
8883         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
8884         MonoInst size by 4 bytes on 64 bit machines.
8885
8886 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
8887
8888         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
8889         replacement with more meaningful field names. Arch maintainers, please
8890         check the assigned names are good enough for your arch.
8891
8892 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8893
8894         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
8895         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
8896
8897 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8898
8899         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
8900         relocations and memory requirements, put the optimization flags
8901         definitions in their own file.
8902
8903 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
8904
8905         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
8906
8907         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
8908
8909 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
8910
8911         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
8912
8913 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
8914
8915         * inssel.brg: use the correct function to get the size of an item
8916         in an array, given an element class.
8917         * aot-compiler.c: do not access class->class_size directly.
8918
8919 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8920
8921         * mini.h, debug-mini.c: added a debugging function to print
8922         info about local variables and arguments in a jitted method.
8923
8924 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
8925
8926         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
8927
8928         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
8929
8930 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8931
8932         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
8933         inner and outer loops when passing vtypes.
8934
8935 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
8936
8937         * mini-ppc.c: take into account the cpu errata for cache flushing
8938         which caused some random errors (bug #79381).
8939
8940 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8941
8942         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
8943         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
8944
8945 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
8946
8947         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
8948         loaded.
8949
8950         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
8951         freebsd ports tree.
8952
8953         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
8954         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
8955
8956         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
8957         displacement.
8958
8959 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
8960
8961         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
8962
8963 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
8964
8965         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
8966         macro does not have to be changed during debugging.
8967
8968         * 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>.
8969
8970         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
8971
8972         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
8973         
8974         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
8975         MONO_ARCH_NO_EMULATE_MUL is defined.
8976
8977         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
8978
8979         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
8980
8981         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
8982
8983         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
8984         
8985 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
8986
8987         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
8988         stuff to mini-exceptions.c where it is used.
8989
8990         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
8991         setup code, the real one is in mini-exceptions.c.
8992
8993         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
8994         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
8995         some changes from the freebsd ports tree.
8996
8997         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
8998         constants.
8999         
9000         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
9001
9002 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
9003
9004         * mini.c: on Linux, check for /proc to be mounted
9005         (bug# 79351, novell bug#201204).
9006
9007 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
9008
9009         * mini.c: handle cases where pthread_attr_getstack() behaves
9010         incorrectly (bug #78096).
9011
9012 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
9013
9014         * mini-arm.c: support larger stack frames (bug #79272).
9015
9016 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
9017
9018         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
9019
9020         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
9021         tokens.
9022
9023         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
9024         mono_class_from_name () to find a class from its name.
9025
9026         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
9027
9028 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
9029
9030         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
9031
9032 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
9033
9034         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
9035
9036 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
9037
9038         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
9039         callinfo->trampoline.
9040
9041         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
9042         fixes #79271.
9043         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
9044         future.
9045
9046 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
9047
9048         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
9049
9050 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
9051
9052         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
9053         stats.method_trampolines, it is already done by the generic trampoline code.
9054
9055         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
9056         
9057 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
9058
9059         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
9060
9061         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
9062
9063         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
9064
9065         * mini.c (print_jit_stats): Print mscorlib mempool size too.
9066         
9067         * mini.c (print_jit_stats): Print new stats.
9068
9069         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
9070
9071 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
9072
9073         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
9074         Address on two dimensional arrays. Fixes #78729.
9075
9076         * mini.h (MonoCompile): Add a 'skip_visibility' field.
9077
9078         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
9079         a method.
9080
9081         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
9082
9083         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
9084         #79130.
9085         
9086         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
9087         a race condition.
9088         (mini_get_ldelema_ins): Ditto.
9089
9090 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
9091
9092         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
9093         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
9094         Fixes #79213.
9095
9096 2006-08-29 Neale Ferguson <neale@sinenomine.net>
9097
9098         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
9099         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
9100
9101         * exceptions-s390x.c: Cosmetic change.
9102
9103         * tramp-s390.c: Fix warning.
9104
9105         * cpu-s390.md: Correct length of mul_imm.
9106
9107 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
9108
9109         * aot-compiler.c: added binary writer with ELF backend
9110         implementation (only on Linux/x86 for now).
9111
9112 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
9113
9114         * Makefile.am: Don't run net 2.0 AOT tests.
9115
9116         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
9117         (mono_compile_assembly): Skip net 2.0 assemblies as well.
9118
9119         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
9120
9121 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9122
9123         * aot-compiler.c: simplified and refactored the asm-writing code
9124         to allow different backends.
9125
9126 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
9127
9128         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9129
9130         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
9131         little. Share patches of type TYPE_FROM_HANDLE as well.
9132
9133         * mini.c (mono_patch_info_equal): New helper function.
9134         (mono_patch_info_hash): Ditto.
9135
9136         * aot-compiler.c (emit_method_code): Fix s390 build.
9137
9138         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
9139         is not handled because it is stored as a flag and not as a type ctor. Fixes
9140         #79016.
9141
9142 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
9143
9144         * aot-compiler.c: Fix computation of GOT slot statistics.
9145         
9146         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
9147         Also remove support for not PIC AOT.
9148
9149         * mini.h: Bump AOT file format version.
9150
9151         * objects.cs: Add a test for #78990.
9152
9153         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
9154         (peter.dettman@iinet.net.au). Fixes #79087.
9155
9156         * basic-long.cs: Add a test for the above.
9157
9158 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
9159
9160         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
9161         
9162         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
9163         code somewhat.
9164
9165 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
9166
9167         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
9168         exceptions.
9169
9170 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
9171
9172         * mini.c: Don't verify COM proxy invoke calls
9173         
9174
9175 2006-08-10  Dick Porter  <dick@ximian.com>
9176
9177         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
9178         which process is holding semaphores locked.
9179
9180 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
9181
9182         * mini-ia64.c mini-amd64.c: Fix #79027.
9183
9184         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
9185
9186         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
9187
9188         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
9189         implicit arguments in a vararg call. Fixes #79027.
9190
9191 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
9192
9193         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
9194         (mono_get_array_new_va_signature): Ditto.
9195
9196 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
9197
9198         * aot-runtime.c: Call init_plt lazily.
9199
9200         * inssel-long.brg: Fix unsigned long->int conversion.
9201
9202         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
9203
9204         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
9205         that most data is now in the .rss/.data section.
9206
9207 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
9208
9209         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
9210
9211         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
9212
9213         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
9214
9215         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
9216
9217         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
9218         virtual call. Fixes #79010.
9219
9220         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
9221         and use the result as the this argument in the real call.
9222
9223         * generics.2.cs: Add a new test for #79010.
9224         
9225 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
9226
9227         * mini-x86.c: Fix a warning.
9228
9229         * aot-compiler.c: Add a bunch of statistics.
9230
9231         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
9232
9233 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
9234
9235         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
9236
9237 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
9238
9239         * 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>.
9240
9241 2006-07-13  Miguel de Icaza  <miguel@novell.com>
9242
9243         * mini.c (mono_method_to_ir): Obtain the original method in the
9244         CIL stream and use this to perform validation.
9245
9246         Fixed: #78816
9247
9248 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
9249
9250         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
9251         (mono_arch_call_opcode): Ditto.
9252
9253         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
9254         #78826.
9255
9256         * mini.c (mono_patch_info_dup_mp): New helper function.
9257         
9258         * aot-compiler.c (compile_method): Fix some of the memory allocated during
9259         compilation. Fixes #78827.
9260
9261 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
9262
9263         * declsec.c: Use original security informations for
9264           MONO_WRAPPER_MANAGED_TO_MANAGED.
9265
9266 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
9267
9268         * mini.c: Allow Com Interop methods/classes and
9269         don't verify COM wrapper calls
9270         
9271
9272 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
9273
9274         * inssel-long32.brg: Fix long->i4 checked conversion.
9275
9276         * exceptions.cs: Add a test for the above.
9277
9278 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
9279
9280         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
9281
9282         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
9283         leaks.
9284
9285         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
9286         #78775.
9287
9288 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
9289
9290         * mini.c: Fix solaris/x86 exception handling.
9291
9292         * Makefile.am: Get rid of $(ICU_LIBS).
9293
9294 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
9295
9296         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
9297         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
9298         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
9299
9300         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
9301
9302         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
9303         this function causes a SIGSEGV.
9304
9305 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
9306
9307         * mini.c: Remove unused solaris/x86 includes.
9308
9309 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
9310
9311         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
9312
9313 2006-06-20  Jb Evain  <jbevain@gmail.com>
9314
9315         * cpu-g4.md: fix max length of start_handler instruction.
9316
9317 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
9318         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
9319
9320 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
9321         * ssa.c: Fixed bug 78653 for SSA based deadce.
9322         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
9323         MonoInst.flags, used in SSA based deadce.
9324         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
9325         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
9326
9327 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
9328
9329         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
9330         it can end up using non executable memory on ppc64 systems
9331         running ppc32 userspace (fix from Johannes Berg).
9332
9333 2006-06-14  Dick Porter  <dick@ximian.com>
9334
9335         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
9336         4.1.1
9337
9338 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
9339         * mini.c: Made so that inline is locally disabled if it would
9340         trigger a .cctor, because too many apps depend on this behavior
9341         (which seems to be also the one of the MS CLR).
9342
9343 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
9344
9345         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
9346         No idea why this worked before.
9347
9348         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
9349         which branch to outer exception clauses since they could skip the
9350         inner finally clauses. Fixes #78633.
9351
9352         * exceptions.cs: Add a test for the above.
9353
9354         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
9355         Fixes #78629.
9356
9357         * iltests.il: Add a test for the above.
9358
9359 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
9360
9361         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
9362         after the end of a try bblock, to prevent asserts in mini_method_compile ().
9363
9364         * iltests.il: Add a test for the above.
9365
9366 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
9367
9368         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
9369         
9370         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
9371         methods as instrinsics.
9372
9373 2006-06-09  Wade Berrier <wberrier@novell.com>
9374
9375         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
9376         (simple-cee-ops.h ssapre-mini-ops.h)
9377
9378 2006-06-09  Neale Ferguson <neale@sinenomine.net>
9379
9380         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
9381         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
9382         instruction).
9383         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
9384         * cpu-s390x.md: Fix max. length values for a couple of instructions.
9385
9386 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
9387
9388         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
9389
9390 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
9391
9392         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
9393         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
9394         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
9395         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
9396         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
9397         of opcodes, so that bug 78549 should not happen again.
9398         * ssapre.c: Updated to use the renamed files.
9399
9400 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
9401
9402         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
9403         in OP_ATOMIC_EXCHANGE_I4.
9404
9405 2006-06-07  Wade Berrier <wberrier@novell.com>
9406
9407         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
9408         in mono_debugger_create_notification_function)
9409
9410 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
9411
9412         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
9413         
9414         * mini.c (type_from_stack_type): Disable some changes which do not
9415         seem to work.
9416
9417         * driver.c: Reenable opts.
9418
9419         * mini.h (MonoStackSlot): New structure to keep track of the verification state
9420         of the evaluation stack.
9421         
9422         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
9423         evaluation stack trace at entry to the bblock.
9424
9425         * mini.c (merge_stacks): New function to perform verification of stack merges.
9426         Turned off by default.
9427
9428         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
9429         STACK_MP.
9430         
9431 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
9432
9433         * local-propagation.c: Fixed bug 78549.
9434
9435 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
9436
9437         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
9438
9439 2006-06-02  Miguel de Icaza  <miguel@novell.com>
9440
9441         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
9442         tramp-arm.c, tramp-ia64.c
9443         (mono_debugger_create_notification_function): Update signature to
9444         new signature and use new protocol for creating the notification
9445         function.  
9446
9447         Should fix the build.
9448
9449 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
9450
9451         * exceptions-ppc.c (mono_jit_walk_stack)
9452         (ves_icall_get_frame_info): Fix the build
9453
9454 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
9455
9456         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
9457
9458 2006-05-31  Raja R Harinath  <rharinath@novell.com>
9459
9460         * il2tests.2.il: New file for generics CIL tests.  Add test for
9461         #78019.
9462         * Makefile.am: Update.
9463
9464         Fix #78019
9465         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
9466         to nullable types.
9467
9468 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
9469
9470         * aliasing.c: Fixed bug 78311.
9471
9472 2006-05-29  Martin Baulig  <martin@ximian.com>
9473
9474         * mini-exceptions.c (mono_find_jit_info): When computing the
9475         native offset, check whether we're actually inside the method's
9476         code; call mono_debug_print_stack_frame() to format the frame.
9477         (ves_icall_System_Exception_get_trace): Call
9478         mono_debug_print_stack_frame() to format the stack frame.
9479         (ves_icall_get_trace): Update to the new debugging API.
9480         (mono_jit_walk_stack_from_ctx): Likewise.
9481         (ves_icall_get_frame_info): Likewise.
9482
9483         * mini.c (get_method_from_ip): Use the new debugging API.
9484         (mono_print_method_from_ip): Likewise.
9485
9486         * exceptions-ppc.c
9487         (mono_jit_walk_stack): Use the new debugging API.
9488         (ves_icall_get_frame_info): Likewise.   
9489
9490 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
9491
9492         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
9493
9494 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
9495
9496         * mini.c: Added "limitator" to inline for debugging.
9497
9498 2006-05-24  Martin Baulig  <martin@ximian.com>
9499
9500         * debug-debugger.c (mono_debugger_init): Create a private,
9501         malloc()-based code manager for the notification function and
9502         intentionally leak it on exit.  This fixes the crash-on-exit race
9503         condition.
9504
9505         * tramp-amd64.c
9506         (mono_debugger_create_notification_function): Added
9507         `MonoCodeManager *' argument.
9508
9509         * tramp-x86.c
9510         (mono_debugger_create_notification_function): Added
9511         `MonoCodeManager *' argument.
9512
9513 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
9514
9515         * aliasing.c: Fixed 64 bit issue.
9516         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9517         default since all known bugs are fixed (one more time!).
9518
9519 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9520
9521         * mini.c: write barrier support.
9522
9523 2006-05-23  Martin Baulig  <martin@ximian.com>
9524
9525         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
9526         check at the top of the file.
9527
9528 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
9529
9530         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
9531         reverting changes without reason and without changelog entries.
9532
9533 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
9534
9535         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
9536         to a few opcodes. Fixes #78439.
9537
9538         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
9539         consistency with other archs.
9540
9541         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
9542
9543 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9544
9545         * debug-debugger.c: fix the build.
9546
9547 2006-05-17  Martin Baulig  <martin@ximian.com>
9548
9549         * debug-debugger.c
9550         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
9551         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
9552         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
9553         (debugger_attach): Call GC_mono_debugger_add_all_threads().
9554
9555 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
9556
9557         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
9558
9559 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
9560
9561         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
9562         MONO_TYPE_GENERICINST.
9563         
9564         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
9565         MONO_TYPE_GENERICINST.
9566
9567 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
9568
9569         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
9570         #78325.
9571
9572 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
9573
9574         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
9575         mempool.
9576         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
9577
9578 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
9579
9580         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
9581         mono_trace_cleanup ().
9582
9583         * iltests.il: Fix problem with the newly added test.
9584
9585         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
9586         due to register constraints, free up the previous hreg. Fixes #78314.
9587
9588         * iltests.il: Add new test for #78314.  
9589
9590         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
9591         Interlocked.Add. Fixes #78312.
9592
9593         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
9594         
9595 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
9596
9597         * inssel.brg (mini_emit_virtual_call): Fix a warning.
9598
9599 2006-05-05  Martin Baulig  <martin@ximian.com>
9600
9601         * debug-mini.c (mono_debug_open_block): New method.
9602
9603         * mini-amd64.c
9604         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9605         the beginning of each basic block.
9606
9607         * mini-x86.c
9608         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9609         the beginning of each basic block.
9610
9611 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9612
9613         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9614         default until I understand why they break the build on amd64.
9615
9616 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
9617
9618         * mini.c (mini_cleanup): Call mono_cleanup ().
9619
9620         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
9621         errors.
9622
9623 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9624
9625         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
9626         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9627         default since all known bugs are fixed, and I cannot reproduce bug
9628         77944... I'm asking Matt Hargett to test again after this commit.
9629
9630 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
9631
9632         * mini-codegen.c: Fixed typo that thrashed inline.
9633
9634 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
9635
9636         * dominators.c (compute_dominators): Avoid using a worklist since
9637         it is not correct in some cases. Instead, iterate over all bblocks as
9638         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
9639
9640 2006-04-28  Miguel de Icaza  <miguel@novell.com>
9641
9642         * mini.c (mono_jit_compile_method_inner): Use
9643         mono_prepare_exception_from_error that resets the value
9644         internally.
9645
9646 2006-04-27  Miguel de Icaza  <miguel@novell.com>
9647
9648         * mini.c: Move the mini_loader_error_to_exception to metadata. 
9649         
9650 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9651
9652         * aliasing.c: Fixed bug 78210.
9653
9654 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9655
9656         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9657         default until all their problems (or the ones they trigger) are fixed.
9658
9659 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
9660
9661         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
9662         
9663         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
9664         as loaded only after resolving patches since that could invoke the same method.
9665
9666         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
9667
9668         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
9669         functions.
9670
9671         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
9672         AOT loader.
9673
9674         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
9675         stack.
9676
9677         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
9678         made from AOT code through the PLT table.
9679
9680         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
9681         holding the plt offset when a call is made to the aot plt trampoline.
9682         
9683 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9684
9685         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
9686         amd64 AOT support.
9687
9688         * Makefile.am (common_sources): Fix build breakage.
9689
9690         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
9691         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
9692         intra-assembly calls if possible.
9693         
9694         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
9695
9696         * mini-trampolines.c: Handle PLT entries.
9697
9698         * mini.c: Avoid creating a GOT var for calls.
9699
9700         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
9701         from mscorlib code.
9702
9703         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
9704         from mscorlib code.
9705
9706         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
9707         AOT code.       
9708
9709         * mini.h: Bump AOT file format version.
9710         
9711         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
9712         covers more cases.
9713
9714 2006-04-25  Martin Baulig  <martin@ximian.com>
9715
9716         * driver.c: Disable copyprop, consprop and inline when running
9717         inside the debugger.
9718
9719 2006-04-25  Martin Baulig  <martin@ximian.com>
9720
9721         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
9722         with `get_current_thread' and added `detach'.
9723         (MonoDebuggerMetadataInfo): Added `thread_size',
9724         `thread_tid_offset', `thread_stack_ptr_offset' and
9725         `thread_end_stack_offset'.
9726
9727 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9728
9729         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
9730         aot-runtime.c.
9731
9732         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
9733         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
9734
9735         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
9736
9737         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
9738
9739         * aot.c: Add support for ADJUSTED_IID.  
9740
9741 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
9742
9743         * aot.c (emit_method_order): Don't align method_order_end.
9744
9745         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
9746         the interface ID changes.
9747
9748 2006-04-21  Dick Porter  <dick@ximian.com>
9749
9750         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
9751         cleaning up a thread.  Fixes the new part of bug 77470.
9752
9753 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
9754
9755         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
9756         to managed wrapper.
9757                      
9758 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
9759
9760         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
9761         
9762         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
9763         SIGSEGV. Fixes #78072.
9764
9765         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
9766         unregister our SIGABRT handler.
9767
9768 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
9769
9770         * mini.c: Disabled inline where it can alter the call stack in a
9771         way visible from managed code.
9772         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
9773         default.
9774
9775 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
9776
9777         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
9778         on other platforms. Fixes #78089.
9779
9780 2006-04-13  Martin Baulig  <martin@ximian.com>
9781
9782         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
9783         determine whether we're inside the debugger.
9784
9785         * debug-debugger.h
9786         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
9787
9788 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9789
9790         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
9791         handler clauses. Fixes #78024.
9792
9793         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
9794         in the CALL_MEMBASE opcodes. Fixes #78088.
9795         (mono_arch_get_vcall_slot_addr): Ditto.
9796
9797 2006-04-10  Martin Baulig  <martin@ximian.com>
9798
9799         * debug-debugger.c: The thread handling code has now been moved
9800         into ../metadata/threads.c.
9801
9802 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9803
9804         * driver.c (mono_main): Fix --with-gc=none build.
9805
9806         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
9807         (mono_spillvar_offset_float): Ditto.
9808         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
9809         hreg, not when its !global, since on ia64, there is a third category: stacked
9810         registers.      
9811
9812 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
9813
9814         * mini.c: set MonoInst->klass for load field address and a few other
9815         places.
9816
9817 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9818
9819         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
9820
9821 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
9822
9823         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
9824         the branch opt changes.
9825
9826 2006-04-06  Dick Porter  <dick@ximian.com>
9827
9828         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
9829         
9830         * wapihandles.c (mini_wapi_seminfo): 
9831         * driver.c (mono_main): Add semaphore info option
9832
9833 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
9834
9835         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
9836         branch optimization changes. Fixes #78009.
9837
9838 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9839
9840         * mini.c: ignore accessibility of methods in managed->native wrappers.
9841
9842 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
9843
9844         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
9845         
9846         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
9847
9848 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
9849
9850         * mini.c: Modify the branch optimizations to preserve the invariant that
9851         the entries inside the in_bb and out_bb arrays are unique.
9852         (mono_unlink_bblock): Avoid creation of new arrays.
9853
9854 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
9855
9856         * mini.c (mono_unlink_bblock): Fix regression caused by previous
9857         change (#77992).
9858
9859 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
9860
9861         * mini.c (optimize_branches): Remove the "optimizations" in
9862         the cbranch1/cbranch2 -> branch cases which were causing several
9863         problems in the past. Fixes #77986.
9864
9865 2006-03-31  Chris Toshok  <toshok@ximian.com>
9866
9867         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
9868         default optimizations :(
9869
9870 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
9871
9872         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
9873         branch.
9874
9875 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
9876
9877         * local-propagation.c: Added comments to structs and removed
9878         "Mono" prefixes from local tree mover types.
9879
9880 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
9881
9882         * Makefile.am (arch_sources): Define this for each architecture so 
9883         libmono_la_SOURCES is defined in one place.
9884
9885 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
9886
9887         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
9888         from handles/.
9889
9890 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
9891
9892         * driver.c: print the GC name supplied by configure.
9893
9894 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
9895
9896         * local-propagation.c: Added tree mover, and moved here all the
9897         local propagation code from mini.c
9898         * mini.c: Added support for treeprop, and moved all the local
9899         propagation code to local-propagation.c
9900         * mini.h: Added support for treeprop
9901         * driver.c: Added support for treeprop, enabled consprop, copyprop,
9902         treeprop, inline and deadce by default
9903         * Makefile.am: Added local-propagation.c
9904
9905 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
9906
9907         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
9908
9909 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
9910
9911         * debug-debugger.c: make it compile without the Boehm GC.
9912
9913 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
9914
9915         * mini.c: fixed issue with mismatch when an icall is registered
9916         with multiple names but same address.
9917
9918 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
9919
9920         * declsec.c, mini-exceptions.c: use write barrier to set reference
9921         fields of managed objects.
9922
9923 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9924
9925         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
9926         (can_access_internals): Fix a warning.
9927
9928         * mini.c (print_method_from_ip): Rename this to 
9929         mono_print_method_from_ip so it gets exported.
9930
9931         * trace.c: Deal with strings inside StringBuilder's containing garbage
9932         and fix memory leaks. Fixes #77848.
9933
9934 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9935
9936         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
9937         fixes #77787.
9938
9939 2006-03-16 Neale Ferguson <neale@sinenomine.net>
9940         
9941         * mini-s390.c: Remove OP_X86_TEST_NULL.
9942
9943 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
9944
9945         * mini.c: use the correct GetHashCode() for the moving collector.
9946
9947 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
9948
9949         * liveness.c: Regalloc spill cost tuning.
9950
9951 2006-03-15 Neale Ferguson <neale@sinenomine.net>
9952         
9953         * mini-s390x.h: Correct S390_LONG macro.
9954
9955         * mini-s390x.c: Cleanup unused code.
9956
9957 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
9958
9959         * jit-icalls.h: New file.
9960
9961         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
9962         icalls and include that instead of including jit-icalls.c.
9963
9964         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
9965         OP_X86 opcodes.
9966
9967 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
9968
9969         * mini.c: when checking for member accessibility, also check for
9970         friend assemblies and for explicit interface implementations.
9971
9972 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
9973
9974         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
9975
9976         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
9977
9978         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
9979         common cases are done first.    
9980
9981         * mini-ops.h: Only define platform specific opcodes on the given platform.
9982
9983         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
9984         branch.
9985         
9986 2006-03-14  Martin Baulig  <martin@ximian.com>
9987
9988         Revert Paolo's change from r57348:
9989
9990         * mini.h: don't use gboolean for bitfields.
9991         * mini.c: verifier changes for fields and methods accessibility.
9992
9993 2006-03-13  Neale Ferguson <neale@sinenomine.net>
9994
9995         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
9996
9997         * mini-s390x.c: Fix conv_r_un.
9998
9999         * cpu-s390, cpu-s390x.md: Fix lengths.
10000
10001 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
10002
10003         * mini.c: nested types have access to all the nesting
10004         levels, not just the enclosing types.
10005
10006 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
10007
10008         * mini.c: added a few more verification checks.
10009
10010 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
10011
10012         * liveness.c: Merge optimizations from the linear-il branch.
10013
10014 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
10015
10016         * mini-ia64.c (emit_call): Add a comment.
10017
10018         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
10019
10020         * tramp-ia64.c: Fix some warnings.
10021
10022 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
10023
10024         * mini.h: don't use gboolean for bitfields.
10025         * mini.c: verifier changes for fields and methods accessibility.
10026
10027 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
10028
10029         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
10030         lazy icall wrapper changes.
10031
10032         * dominators.c: Replace all the dominator algorithms with faster
10033         ones from the linear-il branch.
10034
10035         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
10036         the mempool.
10037
10038         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
10039         common cases are done first.
10040
10041         * mini-amd64.c: Fix some warnings.
10042
10043         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
10044         from the mempool.
10045
10046         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
10047         added code.
10048
10049         * mini.h: Add a missing prototype.
10050
10051 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
10052
10053         * mini.c: Compile icall wrappers lazily.
10054
10055         * mini-codegen.c: Use printf instead of g_print since its much faster.
10056
10057         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
10058         function.
10059
10060         * mini.c (optimize_branches): Cache the negative result from 
10061         remove_block_if_useless ().
10062
10063         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
10064         Also fix some bblock linking issues.
10065
10066         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
10067         assembly files.
10068
10069         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
10070
10071         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
10072         accessed fields first, for better cache behavior.
10073         
10074 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10075
10076         * mini.c: speedup IList<T> array accesses.
10077
10078 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
10079
10080         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
10081         inline_costs counter. Fixes #77190.
10082
10083 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
10084
10085         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
10086         trace messages. Fixes #77706.
10087
10088 2006-03-04  Martin Baulig  <martin@ximian.com>
10089
10090         * tramp-amd64.c, tramp-x86.c
10091         (mono_debugger_create_notification_function): Use
10092         mono_global_codeman_reserve() to allocate a buffer at runtime and
10093         return it.
10094
10095         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
10096
10097         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
10098         notification function at runtime and then call `initialize' in the
10099         `MONO_DEBUGGER__debugger_info' vtable.
10100
10101 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
10102
10103         * iltests.il: Fix a visibility problem.
10104
10105 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
10106
10107         * driver.c, mini.c: add hooks for the counters API.
10108
10109 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
10110
10111         * driver.c: show disabled options.
10112
10113 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10114
10115         * linear-scan.c: always use cost-driven selection.
10116
10117 2006-02-28  Raja R Harinath  <rharinath@novell.com>
10118
10119         * jit-icalls.c (helper_compile_generic_method): Revert change from
10120         2006-02-24.
10121
10122 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
10123
10124         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
10125
10126 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
10127
10128         * inssel.brg: style fixes, mostly to force the updated monoburg
10129         to run for people using svn.
10130
10131 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
10132
10133         * mini.c: match monoburg changes.
10134
10135 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10136
10137         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
10138         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
10139         declaration in the header file.
10140
10141 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
10142
10143         * helpers.c: reduce relocations and mem usage.
10144
10145 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
10146
10147         * mini.h, mini-codegen.c: disable logging features if
10148         requested by configure.
10149
10150 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
10151
10152         * mini.c: tiny verifier changes.
10153
10154 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10155
10156         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
10157         cpu-pentium.md: stack alignment changes for osx/x86,
10158         partially from Geoff Norton <gnorton@customerdna.com>.
10159
10160 2006-02-24  Raja R Harinath  <harinath@gmail.com>
10161
10162         * jit-icalls.c (helper_compile_generic_method): Update to changes
10163         in metadata/class.c.
10164
10165 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
10166         
10167         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
10168         
10169         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
10170         interface calls with large offsets.
10171
10172 2006-02-23  Raja R Harinath  <rharinath@novell.com>
10173
10174         * jit-icalls.c (helper_compile_generic_method): Document the
10175         special-case we depend on so that we can inflate the method twice
10176         with the same context with no bad side-effects.
10177
10178 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
10179
10180         * mini-x86.c, mini-amd64.c: fix for case when xen support
10181         is disabled.
10182
10183 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
10184
10185         * mini-x86.c, mini-amd64.c: generate code to access tls items
10186         in a faster way for Xen systems.
10187
10188 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
10189
10190         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
10191         updates and compilation fixes for the OSX/x86 port, mostly from
10192         Geoff Norton <gnorton@customerdna.com>.
10193
10194 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10195
10196         * inssel.brg: faster interface call implementation
10197         to sync with the interface_offsets MonoVTable changes.
10198
10199 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
10200
10201         * mini.c: more verification checks.
10202
10203 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
10204
10205         * mini.c: added a few more verification checks.
10206
10207 2006-02-17      Neale Ferguson <neale@sinenomine.net>
10208
10209         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
10210         facility on the processor and use it if available.
10211
10212 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10213
10214         * driver.c, aot.c, mini.c: throw exception if the IL code is
10215         invalid or unverifiable.
10216
10217 2006-02-17  Raja R Harinath  <rharinath@novell.com>
10218
10219         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
10220         m.StructField.
10221
10222 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
10223
10224         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
10225
10226 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10227
10228         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
10229         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
10230         handling of instantiated generic valuetypes.
10231
10232 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
10233
10234         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
10235         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
10236         instead.
10237
10238         * generics.2.cs: Revert the nullable reftypes tests.
10239
10240 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
10241
10242         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
10243         using __builtin_frame_address (1) as it doesn't work in the presence
10244         of optimizations. Hopefully fixes #77273.
10245
10246         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
10247         -> generics.cs change as it doesn't work with some automake versions.
10248
10249 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10250
10251         * mini.c: handle systems that sue a different way to
10252         retrieve the stack address of the current thread.
10253
10254 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
10255
10256         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
10257         it specially in the makefile.
10258
10259         * generics.2.cs: Add tests for nullable reference types.
10260
10261 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10262
10263         * mini.c: always handle the case when mono_jit_init()
10264         is called in a thread different from the main thread,
10265         confusing libgc (bug #77309).
10266
10267 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
10268
10269         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
10270
10271 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10272
10273         * mini.c: change optimize_branches () to use a single loop
10274         and introduce a new optimization to simplify some range checks.
10275
10276 2006-02-03  Martin Baulig  <martin@ximian.com>
10277
10278         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
10279         and merged with debugger_thread_manager_add_thread().
10280         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
10281         inform the debugger about the main thread.
10282
10283 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
10284
10285         * basic.cs: Add test for div.un/rem.un constant folding.
10286
10287 2006-02-03  Neale Ferguson <neale@sinenomine.net>
10288
10289         * cpu-s390x.md: correct int_xor_imm length
10290
10291 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
10292
10293         * generics.2.cs: New test for #77442.
10294
10295         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
10296         #77442.
10297
10298 2006-02-02  Martin Baulig  <martin@ximian.com>
10299
10300         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
10301         <mono/metadata/mono-debug-debugger.h>   
10302
10303         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
10304
10305 2006-02-02  Martin Baulig  <martin@ximian.com>
10306
10307         * debug-debugger.h: New header file for debug-debugger.c.
10308
10309         * debug-debugger.c: Big API cleanup; don't run the managed Main()
10310         function is a separate thread anymore; add support for attaching.
10311
10312 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
10313
10314         * tramp-x86.c: Fix a warning.
10315
10316 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
10317
10318         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
10319         on very large methods.
10320
10321         * aot.c (load_patch_info): Fix a warning.
10322
10323 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
10324
10325         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
10326         mini-ops.h: alu membase optimizations.
10327
10328 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
10329
10330         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
10331         to speedup StringBuilder.
10332
10333 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
10334
10335         * dominators.c (mono_compute_natural_loops): Fix detection of
10336         loop body start blocks.
10337
10338         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
10339
10340 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
10341
10342         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
10343         #75145.
10344
10345 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
10346
10347         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10348
10349 2006-01-25  Martin Baulig  <martin@ximian.com>
10350
10351         * debug-debugger.c: Moved the `MonoDebuggerManager' and
10352         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
10353         started to cleanup this file a little bit.
10354
10355 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
10356
10357         * mini.c: optimize a codepath frequently happening in generics code.
10358
10359 2006-01-23  Martin Baulig  <martin@ximian.com>
10360
10361         * Makefile.am: Only compile debug-debugger.c on supported platforms.
10362
10363         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
10364         functions directly.
10365
10366         * driver.c: debug-debugger.c is only available if
10367         `MONO_DEBUGGER_SUPPORTED' is defined.   
10368
10369 2006-01-23  Martin Baulig  <martin@ximian.com>
10370
10371         * debug-debugger.c: Only enable this on platforms where the Mono
10372         Debugger is working (x86 and x86_64).
10373
10374 2006-01-21  Martin Baulig  <martin@ximian.com>
10375
10376         The Mono Debugger is now using the normal `mono' instead of the
10377         `mono-debugger-mini-wrapper' when executing managed code.
10378
10379         * debug-debugger.c: New file; previously known as
10380         debugger/wrapper/wrapper.c.
10381
10382         * debug-mini.c (mono_init_debugger): Removed.
10383
10384         * driver.c (mono_main): Added new `--inside-mdb' command line
10385         argument which is used when running inside the debugger.
10386
10387 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
10388
10389         * liveness.c (mono_analyze_liveness): Remove some unused data
10390         structures.
10391
10392 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
10393
10394         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
10395
10396 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
10397
10398         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
10399         depends on implementation details of monobitset.
10400
10401         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
10402         Fixes #77271.
10403
10404 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
10405
10406         * liveness.c: Update after monobitset changes.
10407
10408 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
10409
10410         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
10411
10412 2006-01-11 Neale Ferguson <neale@sinenomine.net>
10413
10414         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
10415
10416         * mini-s390x.c: Remove warning messages.
10417
10418 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
10419
10420         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
10421
10422 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
10423
10424         * generics.2.cs: Add ldelem/stelem_any test.
10425
10426 2006-01-10 Neale Ferguson <neale@sinenomine.net>
10427
10428         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
10429
10430 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
10431
10432         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
10433         
10434 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
10435
10436         * generics.2.cs: Reenable vtype tests.
10437
10438         * inssel-x86.brg: Remove an icorrect valuetype rule.
10439
10440 2006-01-06 Neale Ferguson <neale@sinenomine.net>
10441
10442         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
10443         initial support for OP_ABS.
10444
10445 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10446
10447         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
10448
10449 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10450
10451         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
10452         conversion and implement LADD/LSUB.
10453
10454         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
10455         architectures.
10456
10457 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10458
10459         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
10460
10461         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
10462         architectures.
10463
10464 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10465
10466         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
10467         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
10468         (stack walk problem).
10469
10470 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
10471
10472         * aot.c (mono_aot_load_method): Fix a warning.
10473
10474 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10475
10476         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
10477
10478 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10479
10480         * iltests.il: Add test for #77148.
10481
10482         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
10483         #77148.
10484
10485 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10486
10487         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
10488
10489 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10490
10491         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
10492         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
10493
10494         * basic-long.cs: Add lconv-to-r4/r8 tests.
10495
10496 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10497
10498         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
10499
10500         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
10501         here as on other archs.
10502
10503 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10504
10505         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
10506
10507 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10508
10509         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
10510         
10511         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
10512
10513         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
10514         instrument_prolog; Add memory_barrier instruction.
10515
10516 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
10517
10518         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
10519
10520 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
10521
10522         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
10523
10524         * aliasing.c inssel.brg: Fix warnings.
10525
10526         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
10527         could skip initialization of some parts of memory.
10528
10529         * mini.c mini-ia64.c: Fix warnings.
10530
10531         * inssel-sparc.brg: Add an implementation of lneg which actually works.
10532
10533 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
10534
10535         * aliasing.c (mono_build_aliasing_information): Add a workaround for
10536         a crash seen on sparc.
10537
10538         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
10539         
10540         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
10541
10542 2005-12-21 Neale Ferguson <neale@sinenomine.net>
10543
10544         * mini-ops.h: Add s390_backchain instruction
10545
10546         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
10547
10548         * cpu-s390.md: Add s390_backchain instruction
10549
10550         * mini-s390.c: Significant ABI changes
10551
10552         * mini-s390.h: Cater for zero length structures
10553
10554 2005-12-20 Neale Ferguson <neale@sinenomine.net>
10555
10556         * mini-s390.c: ABI fixes
10557
10558         * inssel-s390.brg: Remove debug statements
10559
10560         * cpu-s390.md: Fix length of ATOMIC_xx operations
10561
10562 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
10563
10564         * basic-float.cs: Add float<->long conversion tests.
10565
10566 2005-12-16 Neale Ferguson <neale@sinenomine.net>
10567
10568         * mini-s390.c: Fix LOCALLOC processing.
10569
10570         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
10571
10572 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
10573
10574         * iltests.il: Add tests for some opcodes not covered by the other
10575         tests.
10576
10577 2005-12-15 Neale Ferguson <neale@sinenomine.net>
10578
10579         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
10580         register loading for Tail processing; Correct trace output.
10581
10582         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
10583
10584         * cpu-s390.md: Correct size of jmp instruction. 
10585
10586 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10587
10588         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
10589
10590 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10591
10592         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
10593           Bring s390 up to current level.
10594
10595 2005-12-12  Zltan Varga  <vargaz@gmail.com>
10596
10597         * generics.2.cs: Disable the newly added tests as they do not work yet.
10598         
10599         * generics.2.cs: Add valuetype tests.
10600
10601 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
10602
10603         * basic-long.cs: Add i4->u8 test.
10604
10605         * objects.cs: Add tests for JIT intrinsic.
10606
10607         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
10608         optimizations lost by a mistake.
10609
10610 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
10611
10612         * basic-long.cs: Remove a test moved to objects.cs.
10613
10614         * arrays.cs: Add more array tests.
10615
10616 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
10617
10618         * arrays.cs: Add new tests for multi-dimensional arrays.
10619
10620 2005-12-06  Raja R Harinath  <rharinath@novell.com>
10621
10622         * Makefile.am (test_sources2): Add generics.2.cs.
10623         (EXTRA_DIST): Add test_sources2.
10624
10625 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
10626
10627         Support for boxing and unboxing nullable types as well as the
10628         isinst operation on nullables, per the CLI ammendment.
10629
10630         * inssel.brg (CEE_ISINST): Special case for nullable
10631
10632         * mini.c (handle_unbox_nullable): new method
10633         (handle_box): Special case for nullable types
10634         (mono_method_to_ir): Call handle_unbox_nullable in correct
10635         places.
10636
10637         * generics.2.cs: New test suite
10638
10639         * Makefile.am: Support for regression tests with generics.
10640
10641 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
10642
10643         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
10644         allocated to registers. Fixes #76800.
10645
10646 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
10647
10648         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
10649
10650 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
10651
10652         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
10653         of platforms.
10654
10655 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
10656
10657         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
10658         objects.cs.
10659
10660         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
10661         
10662         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
10663 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
10664
10665         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
10666         single precision before storing to a single precision location.
10667
10668 2005-11-28  Raja R Harinath  <rharinath@novell.com>
10669
10670         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
10671
10672 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
10673
10674         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
10675         correct files.
10676
10677         * basic.cs: Remove test_0_byte_compares test which was moved to
10678         objects.cs a long time ago.
10679
10680 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
10681
10682         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10683
10684 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
10685
10686         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
10687         handlers are called.
10688
10689         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
10690         throwing code.
10691
10692          * mini-ia64.c: Add support for the throw->branch exception 
10693         optimization.   
10694
10695         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
10696
10697 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10698
10699         * mini.c: Enabled "fastpath" deadce :-)
10700         
10701 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10702
10703         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
10704         alias analysis pass to support it.
10705         * mini.h: Likewise.
10706         * ssa.c: Likewise.
10707         * liveness.c: Likewise (liveness computation can use aliasing
10708         information to be more accurate).
10709         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
10710         moreover made so that "--compile-all" uses the given optimization
10711         flags and not the default ones.
10712         * aliasing.c: Alias analysis (new file).
10713         * aliasing.h: Likewise.
10714         * Makefile.am: added "aliasing.c" and "aliasing.h".
10715         
10716 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
10717
10718         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
10719         OP_L opcodes.
10720
10721 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
10722
10723         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
10724         fp >= end_of_stack exit condition, as it is not needed, and it might
10725         become true for fp eliminated frames.
10726
10727 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10728
10729         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
10730         coded offsets.
10731
10732 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
10733
10734         * mini-arm.c: fixed alignment of doubles/longs to match
10735         the C ABI (bug #76635).
10736
10737 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
10738
10739         * aot.c: fix compilation with --enable-minimal=aot.
10740
10741 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
10742
10743         * mini-arm.c: fixed compatibility with the new
10744         floating point emulator package for compares.
10745
10746 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
10747
10748         * mini.c : reverted sig->pinvoke changes (r51396-51397).
10749
10750 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
10751
10752         * mini-exceptions.c (print_stack_frame): Output to stderr.
10753         (mono_handle_native_sigsegv): Ditto.
10754
10755 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10756
10757         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
10758         OP_LCONV_TO_OVF_I implementation.
10759
10760         * mini-amd64.c: Add support for the throw->branch exception 
10761         optimization.
10762
10763         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
10764         when the catch clause catches a more general exception, i.e. Object.
10765
10766 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
10767
10768         * cpu-ia64.md: Remove unused opcodes.
10769
10770         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
10771         specific defines for architectures defining USE_SIGACTION.
10772
10773         * mini-ia64.c: Fix some warnings.
10774
10775         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
10776         version seemed to skip a frame.
10777
10778 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10779
10780         * mini.c: Clean up the usage of sig->pinvoke flag. Now
10781         only calls which are made to native code use this flag.
10782
10783 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10784
10785         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
10786         varargs methods as well.
10787         
10788         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
10789         which have save_lmf set. Reorganize methods prologs a bit.
10790
10791         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
10792         debugger to the proper place.
10793
10794 2005-10-29  Martin Baulig  <martin@ximian.com>
10795
10796         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
10797         when running inside the debugger until the debugger has support
10798         for it.
10799
10800 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10801
10802         * mini.h: Fix a warning.
10803
10804 2005-10-24  Miguel de Icaza  <miguel@novell.com>
10805
10806         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
10807         we expose publicly, this returns the string.
10808
10809 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
10810
10811         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
10812         with fp elimination.
10813
10814 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10815
10816         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
10817         native stacktrace using the glibc 'backtrace' function if available.
10818
10819 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
10820
10821         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
10822
10823         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
10824         handle SIGSEGVs received while in native code.
10825
10826         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
10827         code, call mono_handle_native_sigsegv which will abort the runtime
10828         after printing some diagnostics, instead of converting it into a
10829         confusing NullReferenceException.
10830
10831 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10832
10833         * cpu-pentium.md: Remove unused opcodes.
10834
10835 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
10836
10837         * mini-amd64.h (MonoLMF): Add rsp field.
10838
10839         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
10840         the lmf too.
10841
10842 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
10843
10844         * mini-codegen.c (get_register_spilling): Fix some warnings.
10845
10846 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
10847
10848         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
10849         elimination during exception handling. Enable fp elimination by
10850         default.
10851
10852         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
10853         elimination.
10854
10855 2005-10-16  Martin Baulig  <martin@ximian.com>
10856
10857         * mini-exceptions.c
10858         (mono_debugger_run_finally): New public method for the debugger.
10859
10860 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10861
10862         * debug-mini.c (mono_debug_init_method): Fix warning.
10863
10864         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
10865         the 'exname' parameter const to fix some warnings.
10866
10867 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
10868
10869         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
10870         introduced by the previous patch.
10871
10872 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
10873
10874         * basic-float.cs: Add test for precision of float arithmetic.
10875
10876         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
10877         when loading/storing single values from/to memory.
10878
10879         * mini.c (mono_jit_compile_method_with_opt): Create the function
10880         pointers in the correct domain.
10881
10882 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10883
10884         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
10885         introduced by previous patch.
10886         
10887         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
10888         when out_filter_idx is NULL.
10889
10890         * mini-exceptions.c: Don't run filter clauses twice during exception
10891         handling. Fixes #75755.
10892
10893 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10894
10895         * aot.c: Add support for ldflda wrappers.
10896
10897         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
10898         #75902.
10899
10900 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
10901
10902         * mini.c, mini.h: do not consider exception handlers blocks when
10903         setting up interface variables.
10904
10905 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
10906
10907         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
10908
10909 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
10910
10911         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
10912         causes a regression.
10913
10914         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
10915
10916 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
10917
10918         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
10919         of the OP_P definitions.
10920
10921         * TODO: Add a proposal for dealing with the CEE/OP mess.
10922
10923         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
10924         optimizations from the x86 port.
10925
10926         * cpu-amd64.md: Ditto.
10927
10928         * basic.cs basic-long.cs: Add tests.
10929
10930 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
10931
10932         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
10933         Patrik Torstensson's implementation of my exception-handling
10934         optimization idea, when the exception object is not used
10935         (bug #62150).
10936
10937 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
10938
10939         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
10940         of the mul_imm optimizations from the old jit.
10941
10942 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
10943
10944         * mini.c, liveness.c: patch by Patrik Torstensson and
10945         Zoltan Varga to improve performance in methods with
10946         exception clauses.
10947
10948 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10949
10950         * driver.c: Remove 'Globalization' entry from --version.
10951
10952 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
10953
10954         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
10955         there is a profiler interested in JIT events.
10956
10957         * aot.c: Load profile files produced by the AOT profiling module, and
10958         reorder methods based on the profiling info. Add a 'method_order' table
10959         to the AOT file to make mono_aot_find_jit_info work with the reordered
10960         methods.
10961
10962         * mini.h: Bump AOT file version info.
10963
10964 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
10965
10966         * mini-arm.h: work around what looks like a gcc bug when optimizations
10967         are enabled.
10968
10969 2005-09-28  Raja R Harinath  <rharinath@novell.com>
10970
10971         * Makefile.am (AM_CFLAGS): Don't use += to append inside
10972         conditionals.  Use ...
10973         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
10974
10975 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
10976
10977         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
10978         to determine the amount of memory to copy when passing valuetypes.
10979
10980         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
10981         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
10982
10983 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
10984
10985         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
10986         information about aot.
10987
10988 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
10989
10990         * *.c: Replace the use of {Enter,Leave}CriticalSection with
10991         macros. This will allow a deadlock debugger to easily be plugged
10992         in.
10993
10994 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
10995
10996         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
10997
10998 2005-09-27  Raja R Harinath  <rharinath@novell.com>
10999
11000         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
11001         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
11002         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
11003         ($(arch_built)) [CROSS_COMPILING]: Error out.
11004
11005 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
11006
11007         * aot.c: Add support for the no_special_static flag for classes.
11008
11009 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
11010
11011         * Reapply reverted patches.
11012
11013         * *: Revert r50174 as well.
11014
11015         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
11016
11017 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
11018
11019         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
11020
11021 2005-09-23  Miguel de Icaza  <miguel@novell.com>
11022
11023         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
11024         part of the SIG_HANDLER_SIGNATURE.  
11025
11026 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
11027
11028         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
11029         statistics.
11030
11031         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
11032         introduced by previous patch.
11033
11034 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
11035
11036         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
11037         saved registers too.
11038
11039         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
11040         upon the information returned by get_call_info ().
11041         
11042         * mini-x86.c (add_float): Fix stack size calculation.
11043         (mono_arch_call_opcode): Rewrite this so it works based up the
11044         information returned by get_call_info ().
11045         (mono_arch_get_this_vret_args): Ditto.
11046
11047 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
11048
11049         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
11050         in cinfo to determine the registers which need to be used.
11051
11052 2005-09-20  Miguel de Icaza  <miguel@novell.com>
11053
11054         * driver.c (mono_main): Add --server and --desktop flags. 
11055
11056 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
11057
11058         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
11059         registers as global registers.
11060
11061         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
11062         longer needed with the new register allocator.
11063
11064         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
11065
11066         * cpu-ia64.md: Remove unused opcodes.
11067         
11068         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
11069         
11070 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
11071
11072         * cpu-amd64.md: Remove unused opcodes.
11073
11074         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
11075         needed with the new register allocator.
11076
11077         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
11078         reg-reg moves.
11079
11080 2005-09-16  Raja R Harinath  <rharinath@novell.com>
11081
11082         * Makefile.am (check-local): Don't invoke semdel-wrapper.
11083
11084 2005-09-16  Martin Baulig  <martin@ximian.com>
11085
11086         * exceptions-amd64.c
11087         (throw_exception): Don't call mono_debugger_throw_exception() if
11088         we're a rethrow - see the FIXME in the code.
11089
11090 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
11091
11092         * mini.c (mono_init_exceptions): This only works on some architectures.
11093         
11094 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
11095
11096         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
11097         on ia64.
11098
11099         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
11100
11101         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
11102         now in mini-exceptions.c.
11103
11104 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
11105
11106         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
11107         now in mini-exceptions.c.
11108
11109 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
11110
11111         * exceptions-x86.c: Applied patch from Patrik Torstensson 
11112         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
11113
11114         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
11115         code into mini-exceptions.c. Add some assertions to it.
11116
11117 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
11118
11119         * aot.c (emit_section_change): Applied patch from "The Software Team" 
11120         (<software@solmersa.com>). Fix as errors on windows.
11121
11122 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
11123
11124         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
11125         method info into the LMF.
11126
11127 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11128         
11129         * mini-ia64.c: Add proper unwind info for method epilogs.
11130
11131         * exceptions-ia64.c: Add some code to help debugging.
11132         
11133         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
11134
11135         * mini-exceptions.c: Fix warning.
11136
11137 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
11138
11139         * mini.c: Really fix build.
11140
11141         * mini-x86.c mini-amd64.c: Fix build.
11142
11143 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11144
11145         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
11146
11147         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
11148         some Interlocked methods as intrinsics.
11149
11150         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
11151         for Thread methods as well.
11152
11153         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
11154
11155         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
11156
11157         * mini-ia64.c mini-x86.c mini-amd64.c 
11158         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
11159         OP_MEMORY_BARRIER.
11160         
11161         * mini.c (mono_init_exceptions): Fix build breakage.
11162
11163 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
11164
11165         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
11166         of instructions. Use the new ia64_unw_op macros for emitting unwind
11167         info.
11168
11169         * mini.c (mono_init_exceptions): Initialize exception handling
11170         related trampolines at startup.
11171
11172 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
11173
11174         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
11175
11176 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
11177
11178         * mini.c: Handle type loading errors gracefully during compilation and
11179         throw the appropriate exception.
11180
11181 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
11182
11183         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
11184         for the mono binary.
11185
11186 2005-09-09  Martin Baulig  <martin@ximian.com>
11187
11188         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
11189         the release.
11190
11191 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
11192
11193         * mini-arm.h: use emulation for conv.r.un for the release.
11194
11195 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
11196
11197         * mini-arm.c, objects.cs: more fixes and tests for them.
11198
11199 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
11200
11201         * mini-arm.c: align structures to at least 4 bytes to be able
11202         to keep our current optimized memcpy.
11203
11204 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
11205
11206         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
11207
11208 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11209
11210         * mini.c: ignore SIGPIPE.
11211
11212 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
11213
11214         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
11215
11216         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
11217
11218 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
11219
11220         * mini.h: Add prototype for mono_allocate_stack_slots_full.
11221
11222 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
11223
11224         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
11225         exception handling support.
11226         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
11227         patch by Brian Koropoff <briank@marakicorp.com>).
11228
11229 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
11230
11231         * mini.c: revert another 'optimization' which breaks when
11232         items on the eval stack need to be saved at a basic block end
11233         (bug #75940).
11234
11235 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
11236
11237         * jit-icalls.c: for arrays, ensure we always provide
11238         lower bounds.
11239
11240 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
11241
11242         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
11243         
11244         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
11245
11246 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
11247
11248         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
11249         arguments in their original register.
11250
11251 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
11252
11253         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
11254         memset/memcpy.
11255
11256         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
11257         when ssapre is enabled.
11258
11259         * inssel-long.brg: Fix bug in previous patch.
11260
11261         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
11262         multiplication by a constant.
11263
11264 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
11265
11266         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
11267         icc.
11268
11269         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
11270         saving registers.
11271
11272 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
11273
11274         * inssel-arm.brg: apply changes tested by Brian Koropoff
11275         <briank@marakicorp.com>.
11276
11277 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
11278
11279         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
11280         
11281 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
11282
11283         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
11284         to the same register if dreg is just a base register.
11285         (print_ins): Improve printing of membase opcodes.
11286
11287         * inssel-x86.brg: Add optimized ldind(reg) rules.
11288
11289         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
11290
11291 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
11292
11293         * mini.c: when running under valgrind, set the stack bottom for
11294         the GC at the actual approximate stack for the app (fixes running
11295         mono with valgrind).
11296
11297 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
11298
11299         * mini.c: do no break at the first valuetype to init found
11300         (fixes bug #75791).
11301
11302 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
11303
11304         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
11305
11306 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
11307
11308         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
11309
11310 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
11311
11312         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
11313
11314 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11315
11316         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
11317
11318         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
11319         code.
11320
11321         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
11322         code.
11323
11324         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
11325         methods.
11326
11327 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
11328
11329         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
11330
11331 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11332
11333         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
11334         in the tail recursion optimization.
11335
11336         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
11337         debug info into the assembly file.
11338
11339         * iltests.il: Add test for filter regions.
11340
11341         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
11342         initial stack of filter regions. Fixes #75755.
11343
11344 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
11345
11346         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
11347         stack requirements.
11348
11349 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11350
11351         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
11352         the check for an already compiled method on non-ia64 platforms.
11353         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
11354         proper domain.
11355
11356         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
11357
11358         * inssel-x86.brg: Add some optimized call rules.
11359
11360 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
11361
11362         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
11363         method here.
11364
11365         * mini.h mini-trampolines.c: Pass the trampoline argument to 
11366         mono_arch_patch_delegate_trampoline.
11367
11368         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
11369
11370         * mini-trampolines.c: Fix build.
11371
11372         * mini-amd64.h: Add delegate trampolines.
11373
11374         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
11375
11376         * inssel-amd64.brg: Add optimized call rules.
11377         
11378         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
11379
11380         * inssel-ia64.brg: Add optimized ldind(reg) rules.
11381
11382 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
11383
11384         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
11385         change.
11386
11387         * mini-ia64.c: Remove LMF fixmes.
11388
11389         * mini-ia64.h: Remove most fields from LMF.
11390
11391         * inssel-ia64.brg (stmt): Fix unaligned access errors.
11392
11393         * mini-trampolines.c: Add support for IA64 function descriptors.
11394
11395         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
11396         for IA64 function descriptors.
11397
11398 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
11399
11400         * tramp-arm.c: patch the vtable for virtual calls. Added
11401         support code to register/unregister the LMF.
11402         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
11403         more LMF work.
11404
11405 2005-08-19  Dick Porter  <dick@ximian.com>
11406
11407         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
11408         bit value if needed.
11409
11410 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
11411
11412         * mini.c (mini_get_method): Move handling of wrapper data here.
11413
11414         * mini.c (mono_method_to_ir): Add support for dynamic methods.
11415
11416         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
11417         virtual.
11418
11419         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
11420         bblock->code does not remain empty.
11421
11422 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
11423
11424         * arrays.cs: Add regression test for #75832.
11425
11426         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
11427         rules. Fixes #75832.
11428
11429         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
11430         instruction scheduling.
11431
11432 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
11433
11434         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
11435
11436 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
11437
11438         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
11439
11440         * mini-codegen.c: Fix VC build.
11441
11442         * cpu-pentium.md: Increase length of atomic_exhange_i4.
11443
11444 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11445
11446         * mini.h: fix signature for mono_register_opcode_emulation.
11447
11448 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
11449
11450         * mini.c: Get rid of most of the helper_sig_... constants using
11451         mono_create_icall_signature ().
11452
11453 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
11454
11455         * jit-icalls.c (helper_ldstr): New helper function.
11456
11457         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
11458
11459         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
11460         throw, load the string using a helper call instead of creating a string object.
11461
11462         * aot.c: Update after LDSTR changes.
11463
11464         * mini.h: Bump AOT file version.
11465         
11466         * aot.c: Save class size info into the AOT file. Print more statistics during
11467         compilation.
11468
11469         * mini.h: Bump AOT file version.
11470
11471         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11472         ordering of disasm cases. Fixes #74957.
11473
11474 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
11475
11476         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
11477         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
11478         the generic code needed for the ARM port.
11479
11480 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
11481
11482         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
11483         inssel-arm.brg: more ARM features and fixes.
11484
11485 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
11486
11487         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
11488         ARM port work in progress.
11489
11490 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
11491
11492         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
11493
11494         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
11495
11496         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
11497
11498         * inssel.brg (mini_emit_memset): Add support for unaligned access.
11499
11500         * *-ia64.*: Ongoing IA64 work.
11501         
11502         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
11503
11504 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11505
11506         * TODO: Remove out-of-data todo stuff.
11507
11508         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
11509         dead code.
11510
11511         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
11512
11513         * mini.h: Bump corlib version.
11514
11515 2005-07-27  Martin Baulig  <martin@ximian.com>
11516
11517         * mini-codegen.c
11518         (create_copy_ins): Added `const unsigned char *ip' argument; set
11519         `copy->cil_code' from it.
11520
11521 2005-07-27  Martin Baulig  <martin@ximian.com>
11522
11523         * mini-exceptions.c (mono_handle_exception): Don't call
11524         mono_debugger_handle_exception() for filters.
11525
11526 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
11527
11528         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
11529         as well.
11530
11531 2005-07-26  Martin Baulig  <martin@ximian.com>
11532
11533         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
11534
11535         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
11536         helper_compile_generic_method() if the method is actually virtual
11537         and non-final.
11538
11539 2005-07-26  Martin Baulig  <martin@ximian.com>
11540
11541         * mini.c
11542         (trampoline_code): Renamed to `mono_trampoline_code' and made it
11543         public; this is now accessed directly by the debugger.
11544         (mono_generic_trampoline_code): Removed.
11545
11546         * debug-mini.c
11547         (mono_debug_init_method): Also add interncalls and wrappers.
11548
11549 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
11550
11551         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
11552
11553 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
11554
11555         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
11556
11557 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
11558
11559         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
11560
11561 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11562
11563         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
11564         getting TLS offsets on AMD64 too.
11565
11566 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
11567
11568         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
11569
11570 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
11571
11572         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
11573         inssel-arm.brg, mini-arm.h: ARM port work in progress.
11574
11575 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11576
11577         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
11578
11579         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
11580         to mini.c.
11581
11582         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
11583         mono_sparc_is_virtual_call ().
11584         
11585         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
11586
11587         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
11588         trampoline parameters.
11589
11590         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
11591         
11592         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
11593         to mono_arch_get_vcall_slot_addr.
11594
11595         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
11596         trampoline code.
11597
11598         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
11599
11600 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11601
11602         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
11603
11604 2005-07-19  Martin Baulig  <martin@ximian.com>
11605
11606         * exceptions-amd64.c (throw_exception): Call
11607         mono_debugger_throw_exception() here like we're doing it on i386.
11608
11609 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11610
11611         * mini-ia64.c: Add optimized TLS access support.
11612
11613 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
11614
11615         * mini-exceptions.c: Ongoing IA64 work.
11616
11617         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
11618
11619         * mini.c: Use the default optimization set when embedding. Fixes
11620         #75194.
11621
11622 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
11623
11624         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
11625         of trampolines to a separate file.
11626
11627         * mini-trampolines.c: New file.
11628
11629         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
11630         separate file.
11631         
11632         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
11633         amd64/ia64 code.
11634
11635         * mini-codegen.c: Fix cygwin build.
11636
11637 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
11638
11639         * mini.c: Add some minor changes needed by the IA64 port.
11640
11641         * *-ia64.*: Ongoing IA64 work.
11642
11643 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
11644
11645         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
11646         trampolines into arch-independent and arch-dependent parts.
11647
11648         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
11649
11650 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
11651
11652         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
11653
11654         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
11655         the xp-regalloc-branch for amd64.
11656
11657         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
11658         xp-regalloc-branch for x86.
11659
11660 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11661
11662         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
11663
11664 2005-07-06  Martin Baulig  <martin@ximian.com>
11665
11666         * mini.c
11667         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
11668         (mono_jit_runtime_invoke): Likewise.
11669
11670 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11671
11672         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
11673         on x86 too.
11674         
11675         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
11676         without loading their metadata. Reorganize the file format so exception handling+
11677         debug info is kept separate from normal method info. Create MonoJitInfo 
11678         structures for methods lazily.
11679
11680         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
11681         loading metadata.
11682         (x86_class_init_trampoline): Patch AOT class init trampolines too.
11683
11684         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
11685
11686         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
11687         in AOT code.
11688
11689         * mini.h: Bump AOT file version.
11690
11691 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
11692
11693         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11694
11695 2005-07-01  Raja R Harinath  <rharinath@novell.com>
11696
11697         * Makefile.am (check-local): Call semdel-wrapper.
11698
11699 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
11700
11701         * mini-x86.c: Revert the last change as it seems to break the build..
11702
11703 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11704
11705         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11706         
11707         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
11708
11709 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
11710
11711         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
11712         outside of the macro, so strange stuff doesn't happen with gcc4
11713         (NEW_AOTCONST_TOKEN): Likewise.
11714
11715 2005-06-28  Martin Baulig  <martin@ximian.com>
11716
11717         * mini.c (mini_class_is_system_array): New static method; use this
11718         instead of `klass->parent == mono_defaults.array_class' everywhere
11719         since this also works for the new generic array class.
11720
11721 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11722
11723         * inssel.brg: Remove warnings.
11724
11725 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
11726
11727         * mini-ia64.c: Ongoing IA64 work.
11728
11729         * basic-float.cs: Add float->i1 conversion test.
11730
11731         * iltests.il: Add conv.u4 test.
11732
11733 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
11734
11735         * inssel-long.brg: Fix bug caused by last change.
11736
11737 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
11738
11739         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
11740         BSDs.  Allows the x86 JIT to work on OSX86
11741
11742 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
11743
11744         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
11745         u4->i8 conversion.
11746
11747         * mini-ia64.c: Ongoing IA64 work.
11748
11749 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11750
11751         * mini-ia64.c: Ongoing IA64 work.
11752
11753         * driver.c: Clean up jit_code_hash as well when using --regression.
11754
11755         * inssel-long.brg: Fix long->i4/u4 conversion rules.
11756
11757         * basic-long.cs: Add tests for long->u4 conversion.
11758
11759 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
11760
11761         * mini.c: Take mono_get_domainvar out of macros. This makes sure
11762         that we do not depend on undefined C behavior: the order stuff
11763         gets evaluated within an expression. Fixes mono when compiled on
11764         GCC 4.
11765
11766 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
11767
11768         * *-ia64.*: Ongoing IA64 work.
11769
11770         * aot.c: Lower memory usage while loading AOT methods.
11771
11772         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
11773
11774         * mini.h: Bump AOT file format version.
11775
11776 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11777
11778         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
11779
11780 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
11781
11782         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
11783         not on callee assembly). Fixed some comments.
11784
11785 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
11786
11787         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
11788         it gets proper disassembly.
11789         (emit_method_info): Remove some dead code.
11790
11791         * mini.c (mini_method_compile): Allways allocate the GOT var in
11792         mono_method_to_ir for emulating opcodes.
11793
11794 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
11795
11796         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
11797         before freeing the code memory. Fixes #74990.
11798
11799         * objects.cs: Add regression test for #74992.
11800
11801         * liveness.c: Extend live ranges of arguments to the beginning of the
11802         method. Fixes #74992.
11803
11804         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
11805         so it points into the faulting instruction.
11806
11807 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
11808
11809         * jit-icalls.c (mono_imul_ovf): Add exception handling.
11810
11811         * *-ia64.*: Ongoing IA64 work.
11812
11813         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
11814
11815 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
11816
11817         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
11818
11819         * *-ia64.*: Ongoing IA64 work.
11820
11821 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
11822
11823         * basic-long.cs: Add tests for add/sub.ovf.
11824
11825         * basic.cs: Add tests for sub.ovf.
11826
11827         * *-ia64.*: Ongoing IA64 work.
11828
11829 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
11830
11831         * *-ia64.*: Ongoing IA64 work.
11832
11833         * basic.cs: Add conv.ovf.i4.un test.
11834
11835 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
11836
11837         * mini.c: (remove_block_if_useless) Fixed bug 75061.
11838         
11839 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11840
11841         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
11842
11843 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
11844
11845         * *-ia64.*: Ongoing IA64 work.
11846
11847 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11848
11849         * trace.[ch]:
11850         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
11851
11852 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
11853
11854         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
11855
11856 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
11857
11858         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
11859
11860         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
11861         of a call is callable by a near call.
11862
11863 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
11864
11865         * mini-ia64.c: Ongoing IA64 work.
11866
11867 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
11868
11869         * genmdesc.c: Make the generated array non-static.
11870
11871         * inssel-long.brg: Fix LSHR_IMM rule.
11872
11873         * *-ia64.*: Ongoing IA64 work.
11874
11875         * *-ia64.*: Ongoing IA64 work.
11876
11877 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11878
11879         * *-ia64.*: Ongoing IA64 work.
11880
11881         * *-ia64.*: Ongoing IA64 work.
11882         
11883         * mini-ia64.c: Ongoing IA64 work.
11884
11885         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
11886
11887 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11888
11889         * objects.cs basic-calls.cs: Move some tests to objects.cs.
11890         
11891         * objects.cs basic-long.cs: Move some tests to objects.cs.
11892
11893 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
11894
11895         * *-ia64.*: Ongoing IA64 work.
11896
11897         * iltests.il: Add a new test.
11898
11899         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
11900         newobj. Fixes #75042.
11901
11902 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
11903
11904         * *-ia64.*: Ongoing IA64 work.
11905         
11906         * *-ia64.*: Ongoing IA64 work.
11907         
11908         * *-ia64.*: Ongoing IA64 work.
11909
11910         * basic.cs objects.cs: Move tests accessing static variables as well.
11911
11912         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
11913
11914 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
11915
11916         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
11917
11918         * driver.c: Always print failed tests.
11919
11920         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
11921         frame pointer.
11922
11923         * *ia64*: Ongoing IA64 work.
11924
11925 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
11926
11927         * basic.cs: Add tests for add.ovf. Fix warnings.
11928
11929 2005-05-18  Miguel de Icaza  <miguel@novell.com>
11930
11931         * driver.c (mono_main): Avoid crash if no argument is passed to
11932         --break;  Do not use g_error, but f_printf.   And fix all other
11933         ocurrences of the same crash.
11934
11935 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
11936
11937         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
11938         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
11939         Fixes #74742.
11940
11941 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
11942
11943         * *-ia64.*: Add beginnings of IA64 backend.
11944
11945         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
11946
11947 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
11948
11949         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
11950         Fixes #74925.
11951
11952         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
11953
11954         * mini-amd64.c: Fix a warning.
11955
11956 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
11957
11958         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
11959         in float_neg. Fixes #74897.
11960
11961         * mini-amd64.c (emit_call): Fix another near call bug.
11962
11963 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
11964
11965         * declsec.c: Keep the appdomain information in the structure. Added a 
11966         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
11967         value gets overwritten).
11968         * declsec.h: Set the default MonoArray for the the stack to 6. Added
11969         an MonoAppDomain member to MonoSecurityFrame.
11970         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
11971         used in the stack walk. Now use a MonoArray which grow (double) when
11972         it gets full.
11973
11974 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
11975
11976         * mini.c: Re-enabled runtime cleanup, since running threads should
11977         now properly stop when exiting.
11978
11979 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
11980
11981         * mini-codegen.c: New file contaning the arch-independent local
11982         register allocator. Not used by any architectures yet.
11983
11984         * mini.h linear-scan.c: Merge some changes from the 
11985         mini-xp-local-regalloc branch.
11986
11987 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
11988
11989         * mini-amd64.c (emit_call): Fix calls to native functions when the
11990         runtime is compiled as a shared library. Fixes #74756.
11991
11992         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
11993         on a literal field. Fixes #74751.
11994
11995 2005-04-25  Raja R Harinath  <rharinath@novell.com>
11996
11997         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
11998
11999 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
12000
12001         * objects.cs: Add missing null casting test.
12002
12003 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
12004
12005         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
12006         in wrapper methods. Also rename 'address' variable to 'offset'.
12007
12008 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
12009
12010         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
12011         warnings.
12012         
12013         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
12014
12015         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
12016         work on windows.
12017
12018 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
12019
12020         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
12021
12022 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
12023
12024         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
12025         just the last bytes.
12026
12027 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
12028
12029         * aot.c (mono_compile_assembly): Fix warning.
12030
12031         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
12032         by the _MSC_VER stuff.
12033
12034 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
12035
12036         * inssel-long.brg: Fix #74588.
12037
12038         * cpu-amd64.md: Fix #74591.
12039
12040         * iltests.il: Add new regression tests.
12041
12042 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
12043
12044         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
12045         valuetype.
12046
12047 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
12048
12049         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
12050
12051         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
12052         from Bill Middleton <flashdict@gmail.com>.
12053
12054 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
12055
12056         * arrays.cs: Add new regression test. Fix warnings.
12057
12058 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
12059
12060         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
12061         and leakage in CKFINITE.
12062
12063         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
12064         this to a null op since it is called on amd64 too.
12065
12066         * exceptions-amd64.c (get_throw_trampoline): Align stack.
12067
12068         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
12069         body since this is not used on amd64.
12070         
12071         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
12072
12073         * mini-amd64.c: Remove obsolete fixmes.
12074
12075         * mini.c (print_method_from_ip): Fix debugging support.
12076
12077 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12078
12079         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
12080         so that expressions that don't give much gain are not reduced.
12081         * ssapre.h: Likewise.
12082
12083 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
12084
12085         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
12086
12087         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
12088
12089         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
12090
12091 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
12092
12093         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
12094
12095         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
12096
12097 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
12098
12099         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
12100         stack touching.
12101
12102         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
12103
12104         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
12105
12106         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
12107
12108         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
12109         MONO_ARCH_USE_SIGACTION. Fixes #74252.
12110
12111         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
12112
12113         * mini-x86.c: Fix up stack overflow handling.   
12114
12115         * exceptions.cs: Add new regression test.
12116
12117 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
12118
12119         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
12120         mono_jit_thread_attach.
12121
12122         * mini.c (mono_method_to_ir): Verify called method is not abstract.
12123
12124 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12125
12126         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
12127         avoid calling constructors using callvirt.
12128
12129         * inssel.brg: Fix #74073.
12130
12131 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
12132
12133         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
12134         compilation with non-GCC compilers.
12135         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
12136         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
12137
12138 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
12139
12140         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
12141         klass->interface_offsets (will likely fix bug#74073).
12142
12143 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12144
12145         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
12146
12147 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
12148
12149         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
12150         to amd64_div_reg_size ().
12151         
12152         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
12153
12154 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
12155
12156         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
12157
12158 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12159
12160         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
12161
12162 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12163
12164         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
12165         
12166         * mini.c (mono_precompile_assembly): Load and precompile referenced
12167         assemblies as well. Fixes #74015.
12168
12169 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12170
12171         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
12172
12173 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
12174
12175         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
12176         a lot of checks and (anyway) permissions cannot work until corlib is 
12177         loaded.
12178
12179 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
12180
12181         * mini-ppc.c: fixed ABI issue on sysv/ppc.
12182
12183 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
12184
12185         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
12186         calls (fixes bug#72824).
12187
12188 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12189
12190         * mini.c: fix tail recursion elimination (see test in bug#73936).
12191
12192 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
12193
12194         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
12195         some fp functions in sse2 mode.
12196
12197 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
12198
12199         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
12200
12201 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
12202
12203         * mini.h mini.c: Add mono_get_jit_tls_key ().
12204
12205         * mini-x86.c: Enable fast TLS support on windows.
12206
12207 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
12208
12209         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
12210         * mini.c: Check for p/invoke method when generating code. If a
12211         p/invoke method, or it's class, isn't decorated with [Suppress
12212         UnmanagedCodeSecurity] then generate code to call System.Security.
12213         UnmanagedDemand (only if the security manager is active).
12214
12215 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12216
12217         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
12218         last change as it seems to cause strange crashes.
12219         
12220 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12221
12222         * *.c: handle unsafe function pointers where needed.
12223
12224 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12225
12226         * mini.c (mono_jit_free_method): Remove the fixme too.
12227
12228 2005-03-15  Miguel de Icaza  <miguel@novell.com>
12229
12230         * mini.c: As discussed, make the code actually free the delegate
12231         thunk now, to enable the debugging of delegate problems, use
12232         MONO_DEBUG=1 when running Mono. 
12233
12234         This takes also care of parts of the leaks as seen by Joe.
12235
12236 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
12237
12238         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
12239         thread_tls_offset calculation.
12240
12241 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
12242
12243         * declsec.c: Reworked linkdemand checks for icall. The previous code
12244         was using the declaration code (untrusted) and didn't work as expected
12245         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
12246         specific case.
12247
12248 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
12249
12250         * iltests.il: Add new localloc test.
12251
12252         * mini-amd64.c: Handle large stack allocations the same way as on
12253         windows if stack overflow handling is working.
12254         
12255         * mini-amd64.c: Allocate the signal stack using mmap.
12256
12257         * mini.c (sigsegv_signal_handler): Fix reading of context.
12258
12259         * mini-exceptions.c: Fix up stack overflow handling.
12260
12261         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
12262
12263         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
12264
12265         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
12266
12267         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
12268
12269         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
12270         tramp_init functions as they are no longer needed.
12271
12272 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
12273
12274         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
12275         
12276         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
12277
12278         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
12279         
12280         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
12281         support that now.
12282
12283         * mini-ops.h: Add OP_LMUL_IMM.
12284
12285         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
12286         long mul/div opcodes as intrinsic.
12287
12288         * mini-amd64.c (emit_call): Handle the case when the callee might be
12289         an AOT method.
12290
12291 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
12292
12293         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
12294         extra safe.
12295         
12296         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
12297
12298         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
12299
12300 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
12301
12302         * mini.c (mono_codegen): Don't leak here, to help people running
12303         monogrind.
12304
12305 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
12306
12307         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
12308         conversions in sse2 mode.
12309
12310         * basic-float.cs: Add regression test.
12311         
12312         * mini-amd64.c: Reenable sse2.
12313
12314 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12315
12316         * mini-amd64.c: Disable sse2 until some regressions are fixed.
12317
12318 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
12319
12320         * driver.c: Copyright text should include 2005.
12321         
12322 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12323
12324         * cpu-amd64.md (load_membase): Fix more max lengths.
12325
12326 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
12327
12328         * cpu-amd64.md (load_membase): Fix max length.
12329
12330         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
12331
12332         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
12333
12334         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
12335         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
12336
12337         * basic-float.cs: Add rounding regression test.
12338
12339         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
12340
12341 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
12342
12343         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
12344         structures in registers for pinvoke wrappers.
12345
12346 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
12347
12348         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
12349
12350 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
12351
12352         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
12353         wrapper to mono_jit_thread_attach.
12354
12355         * mini.c (mini_jit_thread_attach): New jit icall.
12356
12357         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
12358         native->managed wrappers.
12359
12360         * exceptions.cs: Add new regression test.
12361
12362         * mini.c (optimize_branches): Check regions in the cbranch to throw
12363         block case as well. Fixes #73242.
12364
12365 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12366
12367         * mini.c: thread safety fixes.
12368
12369 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
12370
12371         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
12372         patching stuff, since delegates use jump trampolines so there is
12373         no caller.
12374
12375         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
12376         jump trampolines.
12377         
12378         * tramp-amd64.c: Fix build.
12379
12380         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
12381         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
12382
12383         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
12384         Rename this to mono_arch....
12385         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
12386
12387         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
12388
12389         * mini-amd64.c (emit_call): If both the caller and the callee is
12390         guaranteed to have 32 bit addresses, emit a normal call.
12391
12392         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
12393
12394         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
12395         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
12396         method_ptr inside delegates.
12397
12398 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
12399
12400         * mini.c (mono_jit_free_method): Free the method info even if the native code is
12401         invalidated. Fixes #73001.
12402
12403         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
12404
12405         * mini-x86.c: Only use stdcall for pinvokes on windows.
12406
12407 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
12408
12409         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
12410         * mini-x86.c: remove unreliable __thread var offset detection,
12411         use the correct accessors and enable by default.
12412
12413 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12414
12415         * mini.c (mono_jit_free_method): Fix memory leak.
12416
12417 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
12418
12419         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
12420
12421 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
12422
12423         * cpu-amd64.md: Fix lengths of atomic opcodes.
12424
12425 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
12426
12427         * driver.c: try to not imply using ICU is any good.
12428
12429 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
12430
12431         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
12432         functions as inline ops.
12433
12434         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
12435         some Interlocked functions as inline ops.
12436
12437         * mini.c (move_basic_block_to_end): Fix bug in last patch.
12438
12439         * mini.h (MonoBasicBlock): Reorganize fields a bit.
12440
12441         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
12442
12443         * mini.c: Add support for OP_NOT_TAKEN.
12444
12445         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
12446         structures in registers for pinvoke wrappers.
12447
12448         * mini-amd64.c: Fix warnings.
12449
12450 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
12451
12452         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
12453
12454         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
12455
12456         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
12457         address instead of loading the address from it.
12458
12459         * mini-x86.c: Add support for returning small structs in registers
12460         on Win32. Fixes part of #70864.
12461         
12462 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
12463
12464         * trace.c (get_token): Improve error checking.
12465
12466 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12467
12468         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
12469
12470 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
12471  
12472         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
12473         it can be reused for MonoClass.
12474         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
12475         _LINKDEMAND.
12476
12477 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
12478
12479         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
12480         instead of a MonoReflectionMethod. The method information wasn't used
12481         when displaying SecurityException details (but will be now).
12482
12483 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
12484
12485         * Makefile.am : windows build fix.
12486
12487 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12488
12489         * iltests.il: Add new regression test.
12490
12491         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
12492         #72522.
12493
12494 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
12495  
12496         * mini.c: Moved linkdemand check into helper function check_linkdemand
12497         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
12498         LDFTN, LDVIRTFTN).
12499
12500 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
12501
12502         * declsec.c: Added statistics counter for different kinds of 
12503         LinkDemands.
12504         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
12505         (and commented) declaration.
12506         * mini.c: Added statistics counter for security Demand code 
12507         generation. Added display of security statistics.
12508
12509 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
12510
12511         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
12512         Fix compilation errors under gcc-2.95.
12513
12514 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
12515
12516         * mini.c, driver.c: Use the new jit trampoline hashtable
12517
12518 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12519
12520         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
12521
12522 2005-02-11  Martin Baulig  <martin@ximian.com>
12523
12524         * debug-mini.c (mono_debug_close_method): Free the line number array.
12525
12526 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12527
12528         * aot.c: Break up large methods into smaller ones. Share GOT slots for
12529         icalls.
12530
12531         * mini.h: Bump AOT file format version. 
12532
12533 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
12534
12535         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
12536         APTC and P/Invoke.
12537         * declsec.h: Added macros to get/set lazyly initialized security 
12538         informations about assemblies. Added new enum for different type of
12539         possible LinkDemand violation. Added function to check LinkDemands.
12540         * mini.h: Added a field to MonoCompile to hold any security violation
12541         detected when JITting a method (so it can be thrown later).
12542         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
12543         and CEE_CALLVIRT. Added code to throw exception at the end of
12544         mini_method_compile (note: the exception is unhandled right now).
12545
12546 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
12547
12548         * mini.c, jit-icalls.c: use the managed implementation of
12549         memset for initobj and memset, to avoid managed <-> unmanaged
12550         transitions.
12551
12552 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12553
12554         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
12555         optimization if it would need a GOT var.
12556
12557         * basic.cs: Add tests for constant propagation and switch statements.
12558
12559         * ssa.c: Fix out-of-range constant propagation and switch statements.
12560
12561 2005-02-09    <vargaz@freemail.hu>
12562
12563         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
12564
12565 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
12566
12567         * cpu-amd64.md (load_membase): Fix max length of load_membase.
12568
12569 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12570
12571         * mini.c: update to new signature of mono_class_get_allocation_ftn().
12572
12573 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
12574
12575         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
12576         arithmetic operations.
12577
12578 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
12579
12580         * mini-ppc.c: add a workaround for broken user code that
12581         DllImports vararg functions with non-vararg signatures.
12582
12583 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12584
12585         * mini.c (mono_jit_compile_method_inner): Add detection and a 
12586         meaningfull error message for assemblies written in Managed C++.
12587
12588         * tramp-amd64.c mini-amd64.h: Add support for 
12589         create_trampoline_from_token ().
12590
12591         * aot.c mini-x86.c abcremoval.c: Applied patch from
12592         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
12593
12594 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
12595
12596         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
12597         which takes a MonoImage/token as parameter instead of a MonoMethod.
12598
12599         * aot.c: Use the new trampoline for initializing vtables.
12600
12601         * aot.c: Add support for ldfld/stfld_remote wrappers.
12602
12603         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
12604         rules for compare <MEM>, IMM.
12605
12606         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
12607
12608         * aot.c: Handle inherited finalizers correctly.
12609
12610 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
12611
12612         * inssel.brg (stmt): Add a missing _setup_... ().
12613
12614         * aot.c: Save some parts of the class state to the AOT file and use it
12615         to recompute that state when a class is initialized.
12616
12617         * mini.c: Install AOT hooks into the runtime.
12618
12619         * mini.h: Bump AOT file format version.
12620         
12621         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
12622         Fixes #72148.
12623
12624         * iltests.il: Add new test.
12625
12626 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12627
12628         * mini.c: fix typo.
12629
12630 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
12631
12632         * mini.c: setup the statistical profiler in the thread attach
12633         callback to cope with the new single thread code.
12634
12635 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
12636
12637         * mini-ppc.c: ensure we have enough room for the profiler
12638         calls (fixed bug#72084).
12639
12640 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
12641
12642         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
12643         it.
12644
12645 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12646
12647         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
12648
12649 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12650
12651         * ssapre.c: Fixed an issue with down safety (this allows IronPython
12652         to succesfully execute parrotbench).
12653         * ssapre.h: Likewise.
12654
12655 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12656
12657         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
12658         variable for stores to method arguments (fixes a SSAPRE issue).
12659
12660 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12661
12662         * mini.c: handle value types in dup, fixes gen-112.cs.
12663
12664 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
12665
12666         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
12667         sequence for calls in dynamic methods to avoid thunks.
12668
12669 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12670
12671         * mini.c: correctly remove dynamic methods from the hashtable.
12672
12673 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12674
12675         * driver.c: Disabled SSAPRE until fix the bug that appears
12676         in IronPython's parrotbench.
12677
12678 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
12679
12680         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
12681
12682         * mini.c (mono_method_to_ir): Revert the previous change.
12683         
12684         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
12685         when AOT compiling.
12686
12687         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
12688         mono_jit_info_table_find () etc. when running under valgrind.
12689
12690         * inssel.brg: Fix warnings.
12691
12692         * mini-exceptions.c: Fix warnings.
12693
12694 2005-01-31  Martin Baulig  <martin@ximian.com>
12695
12696         * driver.c (compile_all_methods_thread_main): Don't try to compile
12697         generic methods or anything which has type parameters.
12698
12699 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
12700
12701         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
12702
12703         * TestDriver.cs: Add --verbose flags.
12704
12705         * graph.c ssa.c: Fix 64 bit warnings.
12706         
12707         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
12708         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
12709         Fix 64 bit warnings.
12710
12711         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
12712         variable not spotted by gcc.
12713         
12714         * mini-amd64.c inssel-amd64.brg: Applied patch from  
12715         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
12716         X86_COMPARE_MEMBASE opcodes.
12717
12718         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
12719
12720 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
12721
12722         * *: MonoMethod->signature might be NULL now. You *MUST* use
12723         mono_method_signature.
12724
12725 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12726
12727         * driver.c (compile_all_methods_thread_main): Compile the methods
12728         without invoking cctors.
12729
12730 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12731
12732         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
12733         * basic-calls.cs: test for the above.
12734
12735 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12736
12737         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
12738         MonoJitInfo changes.
12739
12740 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
12741
12742         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
12743         eagerly if it contains dynamic methods.
12744         
12745         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
12746
12747         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
12748         trace, it is now computed by an icall from trace_ips.
12749         
12750         * mini-exceptions.c: Fix a warning.
12751
12752 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
12753
12754         * mini-exceptions.c: don't bother getting stack trace info if
12755         it's not going to be used.
12756
12757 2005-01-27  Raja R Harinath  <rharinath@novell.com>
12758
12759         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
12760         ssapre-mini-ops.h.
12761
12762 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
12763
12764         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
12765
12766         * aot.c: Avoid calling mono_method_get_header () if not needed.
12767
12768         * mini.h: Bump AOT file format version.
12769         
12770         * mini.c (mono_emit_native_call): Allocate a GOT var here.
12771
12772         * mini.c (mono_print_tree): Print more info for calls.
12773
12774 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
12775
12776         * declsec.h: Remove warning by adding missing include for marshal.h
12777
12778 2005-01-26  Martin Baulig  <martin@ximian.com>
12779
12780         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
12781         `ip' twice.
12782
12783 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
12784
12785         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
12786         flags.
12787
12788         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
12789
12790         * aot.c (mono_compile_assembly): Fix a warning.
12791
12792 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
12793
12794         * declsec.c: Look for security attributes on the original MonoMethod 
12795         (and not the wrapped one). This fix permissions on icalls.
12796
12797 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12798
12799         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12800
12801         * mini.c (mono_allocate_stack_slots): Add a fixme.
12802
12803         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12804
12805 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12806
12807         * inssel.brg: optimize casts of sealed types (more
12808         optimizations waiting for fixes in remoting).
12809
12810 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12811
12812         * inssel.brg (stmt): Add another dummy rule.
12813
12814         * driver.c: Fix warnings.
12815
12816         * driver.c (mono_main): If running under valgrind, instruct glib to use
12817         the system allocation functions so valgrind can track the memory
12818         allocated by the g_... functions.
12819
12820         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
12821
12822         * mini-ops.h: Add OP_DUMMY_STORE opcode.
12823
12824         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
12825
12826         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
12827         variables in try regions.
12828
12829         * mini.c (mini_method_compile): Don't disable optimizations on large
12830         methods when AOT compiling.
12831
12832         * mini.c (mono_allocate_stack_slots): New arch independent method to 
12833         allocate stack slots. Not yet used.
12834
12835 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
12836
12837         * debug-mini.c (mono_debug_close_method): Plug some leaks.
12838
12839 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
12840
12841         * mini-ppc.c: make the branch info relative as the code
12842         buffer can be reallocated.
12843
12844 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
12845
12846         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
12847         * driver.c: Removed the AOT/security restriction. Now initialize the
12848         security manager (in metadata) if --security is used.
12849         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
12850         rather than the pointer to declarative security, when AOT is used.
12851
12852 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
12853
12854         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
12855         basic blocks, reduced intrinsic exception throwing code size.
12856
12857 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
12858
12859         * driver.c (mini_usage): Reorder the usage screen.
12860
12861 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
12862
12863         * mini.c (mono_resolve_patch_target): Fix warning.
12864
12865 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
12866
12867         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
12868         previous patch.
12869
12870         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12871
12872         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
12873         breaks the amd64 build.
12874
12875         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
12876         register allocation. Fixes #71454.
12877
12878         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12879
12880         * arrays.cs: Add new regression test.   
12881
12882 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12883
12884         * ssapre.c: Turned usage of snprintf to GString.
12885         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
12886         (I left it on by mistake in my previous commit).
12887
12888 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
12889
12890         * mini.c, cfold.c, basic-calls.cs: preserve side effects
12891         on cond branch optimization (fixes bug# 71515).
12892
12893 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12894
12895         * abcremoval.c: Fixed bug 71062.
12896         * abcremoval.h: Likewise.
12897
12898 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12899
12900         * mini.c: Added a new functionality to optimize_branches, the removal
12901         of useless basic blocks, and fixed some problem in the removal of
12902         critical edges; some utility functions added for both purposes.
12903         * ssapre.c: Added complex expression support, and fixed bug 70637.
12904         * ssapre.h: Likewise.
12905         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
12906         enabled in SSAPRE.
12907         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
12908         * driver.c: Re-enabled SSAPRE.
12909
12910 2005-01-19  Martin Baulig  <martin@ximian.com>
12911
12912         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
12913         the result of mono_get_method_constrained().
12914
12915 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
12916
12917         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
12918         manager.
12919
12920 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
12921
12922         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
12923         be detected.  Fixes #59296.
12924
12925 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12926
12927         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
12928         which can happen. Fixes #71361.
12929
12930 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12931
12932         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
12933         manager.
12934
12935 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12936
12937         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
12938         appdomain-unload.exe to fail.
12939         
12940         * mini.c: Fix some memory leaks.
12941
12942 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
12943
12944         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
12945         Fixed bug and sped up some codepaths.
12946
12947 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12948
12949         * mini.c: Fix some memory leaks.
12950
12951         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
12952         conversion.
12953
12954         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
12955
12956         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
12957         #71320.
12958
12959         * iltests.il: Add regression test for #71320.
12960
12961 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
12962
12963         * mini.c (mono_codegen): Fix installation of profiler hooks.
12964
12965         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
12966
12967 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12968
12969         * mini.h, mini.c, cfold.c: optimize access to enum
12970         readonly fields, too. Eval conditional branches if possible
12971         to perform unreachable code removal in more cases.
12972
12973 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
12974
12975         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
12976
12977         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
12978         code manager.
12979
12980         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
12981         WinXP DEP. Fixes #71244.
12982
12983 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
12984
12985         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
12986
12987 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
12988
12989         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
12990
12991 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
12992
12993         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
12994         changes.
12995
12996         * mini.h: Bump AOT version.
12997
12998         * mini.h (MonoCompile): Change exvar to a hash table.
12999
13000         * mini.c: Allocate a separate exvar for each handler block.
13001
13002         * mini.c: Get rid of the computation of filter_lengths, its not needed.
13003
13004         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
13005         ex var with the pending exception and only throw if the two are equal.
13006         Fixes #68552.
13007         
13008         * exceptions.cs: Add tests for rethrow and nested catch clauses.
13009
13010         * mini-x86.c: Fix warnings.
13011
13012         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
13013         used by all the ports now.
13014
13015         * aot.c: Add write-symbols and save-temps options.
13016
13017 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
13018
13019         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
13020
13021 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
13022
13023         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
13024         operations.
13025
13026         * tramp-s390.c: Check vtable slot belongs to the domain.
13027
13028         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
13029         as per other platforms.
13030
13031         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
13032
13033 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
13034
13035         * driver.c: we don't run the Main() code in a subthread anymore.
13036
13037 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
13038
13039         * mini.c: added experimental rtc support in the statistical
13040         profiler: if the user has the permission, more accurate statistics
13041         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
13042         The MONO_RTC value must be restricted to what the linux rtc allows:
13043         power of two from 64 to 8192 Hz.
13044
13045 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
13046
13047         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
13048
13049 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
13050
13051         * mini-ppc.c: better icache flush for smp.
13052
13053 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
13054
13055         * mini-amd64.c (emit_move_return_value): Fix memory leak.
13056
13057         * mini-x86.c (get_call_info): Add the get_call_info () code from the
13058         amd64 port, not yet used.
13059
13060 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13061
13062         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
13063         a struct type.
13064
13065 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
13066
13067         * driver.c: Added --security option to activate the security manager.
13068         Right now this will allow code generation for declarative demands and
13069         is disabled when AOT is specified.
13070         * mini.c: Add code generation for declarative security demands.
13071         * mini.h: Add mono_use_security_manager as an extern gboolean.
13072
13073 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13074
13075         * aot.c (mono_compile_assembly): Speed up compilation a bit by
13076         emitting more dense assembly code.
13077
13078         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
13079         exception throwing stuff.
13080
13081 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
13082
13083         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
13084         dead code.
13085
13086         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
13087         left in by mistake.
13088
13089         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
13090         fixed.
13091
13092         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
13093
13094         * tramp-*.c: Only patch vtable slots if the object is in the current
13095         domain. Fixes appdomain-unload.exe.
13096
13097         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
13098         
13099         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
13100         x86 branch.
13101
13102 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13103
13104         * mini.c (reverse_branch_op): New helper function.
13105
13106         * mini.c (optimize_branches): Run the new optimization only on 
13107         platforms which support it. Also reverse all kinds of branches.
13108
13109         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
13110
13111         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
13112         a throw statement.
13113
13114         * mini.c (optimize_branches): Reverse not-equals branches if the false
13115         bblock is a throw. This happens a lot of time with argument checking in
13116         corlib.
13117
13118         * mini.c (mono_codegen): Add support for placing basic blocks after
13119         the function epilogue.
13120
13121         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
13122         function epilogue.
13123         
13124 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
13125
13126         * mini.c (setup_stat_profiler): Only set this up if the platform
13127         supports ITIMER_PROF.
13128
13129 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13130
13131         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
13132         previous patch.
13133
13134         * inssel.brg: Fix a warning.
13135
13136 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
13137
13138         * mini.c: added support for statistical profiler 
13139         (run with: --profile=default:stat).
13140
13141 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
13142
13143         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
13144
13145         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
13146
13147         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
13148         related to global registers from the amd64 port.
13149
13150 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
13151
13152         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
13153
13154         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
13155         with global registers.
13156         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
13157
13158         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
13159
13160 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
13161
13162         * debug-mini.c (encode_value): Fix off-by-one.
13163
13164         * aot.c (encode_value): Likewise.
13165
13166         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
13167
13168 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
13169
13170         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
13171         AOT.
13172
13173         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
13174         
13175         * aot.c (emit_method_info): Increase size of temp buffer.
13176
13177         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
13178         the AOT case.
13179
13180 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
13181
13182         * aot.c (emit_method_info): Fix build.
13183         
13184         * aot.c: Further rework of the AOT file format to reduce the size of
13185         the method info data.
13186
13187         * mini.h: Bump AOT file format version.
13188
13189 2004-12-27  Martin Baulig  <martin@ximian.com>
13190
13191         * mini.c (mini_get_method): New static method; call
13192         mono_get_method_full() and mono_get_inflated_method().
13193         (mono_method_to_ir): Use mini_get_method() instead of
13194         mono_get_method_full(). 
13195
13196 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
13197
13198         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
13199
13200 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
13201
13202         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
13203
13204         * inssel-amd64.brg: Add some optimization rules.
13205
13206 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
13207
13208         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
13209         standard not GC'd stuff is fine.
13210
13211 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
13212
13213         * aot.c: Rework the AOT file format to get rid of most of the global
13214         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
13215
13216         * mini.h: Bump AOT file format version.
13217         
13218 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
13219
13220         * mini.h: Bump AOT file format version.
13221
13222         * aot.c (mono_aot_is_got_entry): New function to determine if an 
13223         address is inside a GOT.
13224
13225         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
13226
13227         * cpu-pentium.md: Increase the maximum size of some instructions which
13228         might involve a got access.
13229         
13230         * mini.c (get_method_from_ip): Another debug helper function.
13231
13232         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
13233         when got var accesses are created during the decompose phase.
13234
13235         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
13236
13237         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
13238         argument mini_compile_method and to MonoCompile, and use this to
13239         determine whenever a given method is compiled for AOT. This allows the
13240         other methods compiled during AOT compilation to be free of AOT stuff,
13241         so the backends does not need to add special support for them by
13242         creating a fake GOT etc.
13243
13244         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
13245         longer needed.
13246
13247 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
13248
13249         * mini.c (mono_method_to_ir): It turns out that some of the
13250         x-appdomain wrappers are lax with types, so just ignore this for
13251         all wrappers.
13252
13253         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
13254         at the vtable->klass. If it is non-shared code we can just use the
13255         vtable.
13256
13257 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
13258
13259         * mini-ppc.c: access MonoDomain from tls, too.
13260
13261 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
13262
13263         * declsec.c: Removed unused variable (and related warning ;-)
13264
13265 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
13266
13267         * iltests.il: New test for LDELEMA on an array of ref types.
13268
13269         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
13270         all ldelema's on reftypes.
13271         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
13272         it was the wrong place to put it.
13273
13274         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
13275         register to pop to make this cleaner, at the request of Paolo.
13276
13277 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13278
13279         * mini-ops.h (OP_GETHASHCODE): New op.
13280
13281         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
13282
13283         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
13284         operation.
13285
13286         For a microbenchmark, this reduces the cost of Hashtable.get_Item
13287         by 25%.
13288         
13289         * mini-x86.c (mono_arch_output_basic_block): Rather than
13290
13291         add ebp, 4
13292
13293         Emit
13294
13295         pop edx
13296
13297         The first is 3 bytes while the second is 1. This saves 36 kb on
13298         mscorlib, quite a big saving. When bootstraping mcs, I was able to
13299         see a small boost because of icache locality.
13300
13301         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
13302
13303 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
13304
13305         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
13306         started code sharing with the generic code.
13307
13308 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
13309
13310         * mini-ppc.c, cpu-g4.md: added code for direct access to
13311         tls data slots.
13312
13313 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
13314
13315         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
13316          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
13317         to OP_TLS_GET.
13318
13319 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
13320
13321         * declsec.c|h: Added functions to cache the declarative stack modifiers
13322         in MonoJitInfo and to create a security frame from a MonoJitInfo 
13323         structure.
13324         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
13325         created. Register internal calls for System.Security.SecurityFrame::
13326         _GetSecurityFrame and _GetSecurityStack.
13327         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
13328         the definitions for the new stack walk/callback mechanism.
13329         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
13330         first security frame for LinkDemands and InheritanceDemands) and
13331         GetSecurityStack for Demands. Both use the new mono_walk_stack code
13332         from lupus.
13333         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
13334         walk initialization (lupus).
13335
13336 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13337
13338         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
13339         idiom.
13340         (handle_loaded_temps): Do not create a temporary variable for
13341         things that we know are temps. They will never be modified.
13342         (mono_spill_call): Set MONO_INST_IS_TEMP
13343         (mono_emulate_opcode): ditto
13344         (emit_tree): ditto
13345         (mono_method_to_ir.CEE_DUP): ditto
13346
13347 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
13348
13349         * mini.c (type_to_eval_stack_type): Make this handle the void type
13350         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
13351         (emit_tree): use ip_in_bb to special case some common idioms
13352         Update all callers to pass in the IP.
13353         (mono_method_to_ir): Make CEE_CALL* do the above as well.
13354
13355         This gives us a nice 2% speedup in mcs bootstrap.
13356
13357         * mini-x86.c (peephole_pass): Peephole pass to make
13358         mov  [foo], eax
13359         push [foo]
13360
13361         into
13362
13363         mov [foo], eax
13364         push eax
13365
13366         * mini.c (ip_in_bb): new method.
13367         (mono_method_to_ir): use this method rather than doing the hash
13368         lookup ourselves.
13369
13370         * linear-scan.c (mono_linear_scan): When expiring actives, you
13371         don't need to keep around variables that expire on this
13372         instruction. This makes it so that:
13373              a = b + 1
13374         will turn into:
13375              store (ebx add (ebx, 1))
13376         which will become
13377              add ebx, 1
13378
13379 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
13380
13381         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
13382         combination to avoid doing two copies. Fix up problems with previous
13383         patch.
13384
13385         * mini.c: Fix 64 bit warnings.
13386
13387         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
13388
13389 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
13390
13391         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
13392         changes from the x86 code.
13393
13394         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
13395
13396 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
13397
13398         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
13399         throwing code to reduce its size, unify the AOT and non-aot code and 
13400         get rid of relocations in the AOT case.
13401
13402         * mini-x86.h mini.c exceptions-x86.c 
13403         (mono_arch_get_throw_corlib_exception): New arch specific function to 
13404         raise corlib exceptions which doesn't require relocations in the 
13405         caller.
13406
13407         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
13408
13409 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
13410
13411         * mini.c (mono_emit_method_call): Only allocate the got var when it is
13412         needed.
13413
13414         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
13415         in the AOT case.
13416
13417 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13418
13419         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
13420         with add function when used from Inc/dec atomic 
13421         functions. Re-enabled optimization on x86.
13422         * mini-ops.h: renamed atomic_add functions to
13423         allow _add to match the Interlocked::Add and
13424         _add_next to match Interlocked::Inc/Dec.
13425
13426 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
13427
13428         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
13429         linking of BBs to the end BB, and enabled SSAPRE also with
13430         consprop and copyprop (which was prevented by that bug).
13431
13432 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13433
13434         * mini-x86.c: disabling the Interlocked optimizing code. 
13435
13436 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13437
13438         * aot.c (load_aot_module): Move reading of got_addr after the AOT
13439         file version check.
13440         
13441 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13442
13443         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
13444         interlocked optimization due lack of support on x86, rewrote 
13445         exchange to take into account that base may be in eax.
13446         
13447         xsp works again; activated Interlocked optimizing code.
13448         
13449 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13450
13451         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13452
13453 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
13454
13455         * mini-ops.h: Add new opcodes.
13456
13457         * mini.h: Add new patch types. Add got_var to MonoCompile.
13458
13459         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
13460         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
13461         make it work with all kinds of patchable code.
13462
13463         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
13464         address of the GOT, and referencing entries in the GOT.
13465
13466         * mini.c: Add code to load the GOT address if needed by an opcode.
13467
13468         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
13469         independent AOT code on the x86 using an elf-style Global Offset Table.
13470
13471 2004-12-14  Raja R Harinath  <rharinath@novell.com>
13472
13473         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
13474
13475 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13476
13477         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
13478         when running xsp.
13479
13480 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
13481
13482         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
13483         of Interlocked:Increment/Decrement/Add as inline ops.
13484         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
13485
13486 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
13487
13488         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
13489         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
13490
13491 2004-12-12  Duncan Mak  <duncan@ximian.com>
13492
13493         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
13494         again. `patch_info->table_size' is no longer valid after Zoltan's
13495         commit #37636.
13496
13497 2004-12-12  Martin Baulig  <martin@ximian.com>
13498
13499         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
13500         if we are the "real" method, ie. not an inlined method inside it.
13501
13502 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
13503
13504         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
13505         before we look in the special fields table. This fixes
13506         ../tests/thread-static-init.cs.
13507
13508 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13509
13510         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
13511         for Array get_Rank and get_Length. Fixes bug #70465.
13512
13513 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
13514
13515         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
13516         separate structure to reduce the size of MonoJumpInfo.
13517
13518 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
13519
13520         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
13521
13522 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
13523
13524         * mini.c (mini_get_inst_for_method): Changed to allow ports
13525         to return a MonoInst instead of opcode 
13526         (renamed mini_get_opcode_for_method to better reflect the new functionality)
13527         
13528         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
13529         Allow ports to return a created MonoInst instead of op-code, will enable
13530         new optimizations.
13531         (renamed mini_get_opcode_for_method to better reflected the functionality)
13532
13533 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
13534
13535         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
13536
13537 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13538
13539         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
13540         Fixes #69985.
13541
13542 2004-12-08  Martin Baulig  <martin@ximian.com>
13543
13544         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
13545         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
13546
13547 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13548
13549         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
13550         correctly.
13551
13552         * exceptions.cs: Disable some tests which depend on properties of x86 fp
13553         arithmetic.
13554
13555 2004-12-08  Raja R Harinath  <rharinath@novell.com>
13556
13557         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
13558
13559 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
13560
13561         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
13562         bug introduced by the previous patch.
13563
13564 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13565
13566         * mini-ppc.c, objectc.cs: handle large structs passed by value
13567         (fixes bug #69972).
13568
13569 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
13570
13571         * mini-ppc.c: OP_ARGLIST implementation from
13572         Geoff Norton  <gnorton@customerdna.com>.
13573
13574 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
13575
13576         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
13577         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
13578
13579 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13580
13581         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
13582
13583 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13584
13585         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
13586         support.
13587
13588 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
13589
13590         * mini-sparc.c: Zero out localled-ed memory.
13591
13592         * iltests.il: Add tests for zeroing out localloc-ed memory.
13593
13594 2004-12-04  Martin Baulig  <martin@ximian.com>
13595
13596         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
13597         mono_method_get_signature_full().       
13598
13599 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
13600
13601         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
13602         and some utility functions (always for SSAPRE), integrated SSAPRE.
13603         * mini.h: Likewise.
13604         * driver.c: Added ssapre option.
13605         * ssa.c: Small fix on OP_ARG handling.
13606         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
13607         * Makefile.am: Likewise.
13608
13609 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
13610
13611         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
13612         now in the xp code.
13613
13614         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
13615         icall.
13616
13617 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13618
13619         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
13620         
13621         * cpu-s390.md : Increase instruction length of oparglist.
13622
13623         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
13624
13625 2004-11-30  Martin Baulig  <martin@ximian.com>
13626
13627         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
13628         virtual generic methods.  We call a special helper_compile_generic_method()
13629         icall to retrieve the method from the vtable, inflate and compile
13630         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
13631
13632         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
13633
13634 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
13635
13636         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
13637
13638 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
13639
13640         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
13641         Fixes #69929.
13642
13643 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
13644
13645         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
13646         platforms with PIC aot.
13647
13648 2004-11-28  Martin Baulig  <martin@ximian.com>
13649
13650         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
13651         Fixes gen-112.cs.
13652
13653 2004-11-28  Martin Baulig  <martin@ximian.com>
13654
13655         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
13656         the result of mono_type_get_underlying_type() to check whether
13657         we're byref.
13658
13659 2004-11-26  Martin Baulig  <martin@ximian.com>
13660
13661         * mini.c
13662         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
13663         in the g_assert().
13664
13665 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
13666
13667         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
13668         the same way as the other arguments so they won't get clobbered.
13669
13670         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
13671         calls through R11 since it is clobbered by the trampoline code.
13672
13673 2004-11-26  Raja R Harinath  <rharinath@novell.com>
13674
13675         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
13676         pick up in-tree mscorlib.dll.
13677
13678 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
13679
13680         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
13681
13682         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
13683         runtime data/code are now stored in a table similar to the GOT in ELF. 
13684         This allows the code itself to be position independent.
13685
13686         * aot.c: Fix loading of referenced assemblies after the lazy assembly
13687         loading changes.
13688
13689         * aot.c: Attach ELF type (object/function) directives to all global
13690         symbols.
13691
13692         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
13693
13694         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
13695
13696         * mini-amd64.h: Turn on PIC AOT code.
13697
13698         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
13699         returning the offset within an OP_AOTCONST instruction where the GOT
13700         offset needs to be added.
13701
13702         * mini.h: Bump AOT file format version.
13703
13704 2004-11-25  Martin Baulig  <martin@ximian.com>
13705
13706         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
13707         uninflated generic methods.
13708
13709 2004-11-25  Martin Baulig  <martin@ximian.com>
13710
13711         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
13712
13713 2004-11-24  Martin Baulig  <martin@ximian.com>
13714
13715         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
13716         original klass (this only applies for generic instances).
13717
13718 2004-11-24  Martin Baulig  <martin@ximian.com>
13719
13720         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
13721         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
13722         that array).
13723
13724 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
13725
13726         * mini.c (mono_method_to_ir): Disable inlining for methods containing
13727         localloc. Fixes #69678.
13728
13729         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
13730         
13731 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
13732
13733         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
13734         used SSE registers on pinvoke calls. Fixes #69774.
13735
13736 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
13737
13738         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
13739         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
13740
13741 2004-11-23  Raja R Harinath  <rharinath@novell.com>
13742
13743         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
13744         Refer directly to the mcs/ tree.
13745
13746 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13747
13748         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
13749         Check if a trampoline for a synchronized method is required. 
13750
13751 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
13752
13753         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
13754         with localloc if needed. Throe arithmetric exception in
13755         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
13756         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
13757
13758 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
13759
13760         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
13761         types before switching on type.  Fixes #69622.
13762
13763 2004-11-19  Raja R Harinath  <rharinath@novell.com>
13764
13765         * Makefile.am (check-local): New.  Integrate into 'make check'.
13766         (MCS,RUNTIME): Define using in-tree mono and mcs.
13767         (ILASM): New.
13768         (%.exe): Use $(ILASM).
13769
13770 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
13771
13772         * mini-ppc.c: adjust initial prolog size (bug #69691).
13773
13774 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
13775
13776         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
13777         #69664.
13778
13779 2004-11-17  Raja R Harinath  <rharinath@novell.com>
13780
13781         * Makefile.am (clean-local): Rename from 'clean'.
13782
13783 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13784
13785         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
13786         to mono_arch_is_int_overflow. 
13787         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
13788         SIGFPE events.
13789
13790 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
13791
13792         * declsec.c|h: New files to support declarative security attributes.
13793         Added function to check if a method has (applicable) security.
13794         * mini.c|h: Add check for declarative security attributes in
13795         mono_method_check_inlining.
13796         * Makefile.am: Added declsec.c and declsec.h to the build.
13797
13798 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
13799
13800         * mini.c, mini.h: update to keep dynamic code info per-domain.
13801
13802 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
13803
13804         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
13805         (mini_init): Get rid of it from here too.
13806
13807 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
13808
13809         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
13810         implemented OP_RETHROW (patch by Geoff Norton
13811         <gnorton@customerdna.com>).
13812
13813 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
13814
13815         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
13816         between appdomains.  Fixes appdomain-unload on PPC.
13817
13818 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
13819
13820         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13821         mini-exceptions.c: handle the new wrapper types.
13822         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
13823         token value as a MonoClass* when compiling a wrapper.
13824         mono_jit_create_remoting_trampoline now takes an additional
13825         MonoRemotingTarget parameter.
13826         
13827 2004-11-10  Martin Baulig  <martin@localhost>
13828
13829         * mini.c (mono_method_to_ir): Use `generic_container->context'
13830         rather than creating a new one.
13831
13832 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13833
13834         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
13835
13836         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
13837
13838 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
13839
13840         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
13841         the experimental aot cache stuff.
13842
13843 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
13844
13845         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13846         mini-exceptions.c: update to exception clause structure changes.
13847
13848 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13849
13850         * exceptions-x86.c (throw_exception): Fix warnings.
13851
13852         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
13853         for OP_RETHROW.
13854
13855 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13856
13857         * exceptions-sparc.c (get_throw_exception): Really fix this.
13858
13859 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
13860
13861         * tramp-*.c: we no longer support icalls without wrappers, so
13862         a bit of code can be removed here
13863
13864 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
13865
13866         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
13867         patch.
13868
13869         * cpu-sparc.md: Add op_rethrow.
13870
13871         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
13872
13873         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
13874
13875         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
13876         * mini-ops.h: Add OP_RETHROW.
13877
13878         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
13879
13880         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
13881
13882 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
13883         
13884         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
13885         Makes the output much easier to read
13886
13887 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
13888
13889         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
13890         prevents another huge leak when compiling with ssa. Secondly, the
13891         performance of doing this rather than freeing the lists is much
13892         better. GList does a lock every time you allocate a list link,
13893         so that it can use a memory pool. So, it is better to just use
13894         a memory pool of our own.
13895         
13896         * ssa.c, linear-scan.c: replace g_list_remove_link with
13897         g_list_delete.  The remove one does not free the GList, so we were
13898         leaking memory. On -O=all --compile-all with corlib, this cut down
13899         3 MB of allocations.
13900
13901 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
13902
13903         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
13904
13905         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
13906
13907         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
13908         into a new function mono_create_jit_trampoline ().
13909
13910 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
13911
13912         * trace.c (get_spec): Allow tracing of classes without a namespace.
13913
13914 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
13915
13916         * mini.c: Fix pointer overwrite in mini_method_compile.
13917
13918 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
13919
13920         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
13921         The darwin ABI needs some special handling for 1 and 2 byte structs
13922         Lets use lbz/lhz instead of lwz everywhere.
13923         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
13924         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
13925         Use stb/sth for the former, and put the latter always on stack instead of in
13926         argument registers.
13927
13928 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
13929
13930         * trace.c (is_filenamechar): Add '_'.
13931
13932 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
13933
13934         * mini-s390.c: Fix prolog length to allow for large trace requirements.
13935
13936         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
13937
13938 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
13939
13940         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
13941         depends on libmonogc. Fixes #68805.
13942
13943 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
13944
13945         * mini.c (mono_jit_free_method): Provide extra information for
13946         this error.  Currently this leaks, but will be turned into a
13947         developer option in the future.
13948
13949 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
13950
13951         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
13952
13953 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
13954
13955         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
13956         boundary. Fixes reading of PATCH_INFO_R4 and R8.
13957         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
13958
13959 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
13960
13961         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
13962         trampolines for AOT code.
13963
13964 2004-10-22    <vargaz@freemail.hu>
13965
13966         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
13967         constructed types. Fixes #68136.
13968
13969 2004-10-21  Martin Baulig  <martin@ximian.com>
13970
13971         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
13972         if it returns true, unwind the stack to the call instruction.
13973
13974 2004-10-21    <vargaz@freemail.hu>
13975
13976         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
13977
13978         * mini.h: Bump AOT version number.
13979
13980         * objects.cs: Add another test for unbox trampolines.
13981
13982         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
13983         valuetype methods.
13984
13985 2004-10-20    <vargaz@freemail.hu>
13986
13987         * driver.c: Add SHARED to the set of optimizations tested.
13988
13989         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
13990
13991         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
13992         used by CEE_NEWARR.
13993
13994         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
13995
13996 2004-10-20  Martin Baulig  <martin@ximian.com>
13997
13998         * mini-exceptions.c (mono_handle_exception): Call
13999         mono_debugger_handle_exception() to tell the debugger about
14000         catch/finally clauses.
14001
14002 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
14003
14004         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
14005
14006         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
14007         #68447.
14008
14009 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
14010
14011         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
14012         methods as their native size, fixed bug #57543, #57545.
14013         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
14014         This saves a temporary register and mullw call down into 1 (minor perf
14015         increase for cases like sum = sum * 5;  This use to translate into:
14016             li r11,5
14017             mullw r28,r28,r11
14018         It now translates to
14019             mulli r28,r28,5
14020
14021 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
14022
14023         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
14024         #68388.
14025
14026 2004-10-11  Martin Baulig  <martin@ximian.com>
14027
14028         * mini.c (mono_method_to_ir): If we're a generic method, get the
14029         MonoGenericContainer from our MonoMethodNormal and create a
14030         MonoGenericContext from it.
14031
14032 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
14033
14034         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
14035
14036         * basic-long.cs: Add test for checked i8->i2 cast.
14037
14038 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14039
14040         * inssel-ppc.brg: added a couple of speedup rules.
14041
14042 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
14043
14044         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
14045         to speed up rebuilds.
14046
14047 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14048
14049         * mini-s390.c: Minor fix to OP_OR_IMM.
14050
14051 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
14052
14053         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
14054         better. Fixes appdomain-unload.exe on sparc.
14055
14056 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
14057
14058         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
14059         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
14060         see bug 67324.
14061
14062 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
14063
14064         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
14065
14066 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
14067
14068         * mini.c: Always generate a field read/write wrapper for members
14069         of the class MarshalByRefObject since the actual instance could
14070         be a CBO.
14071
14072 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
14073
14074         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
14075
14076 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
14077
14078         * driver.c mini.h trace.c: Move the setting of the main assembly into
14079         a separate function called mono_trace_set_assembly () and call it after
14080         actually loading the main assembly. Fixes #66872.
14081
14082 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
14083
14084         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
14085         using the code manager.
14086
14087 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
14088
14089         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
14090
14091 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
14092
14093         * cpu-amd64.md: Fix bug in previous patch.
14094         
14095         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
14096         #66650.
14097
14098 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
14099
14100         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14101         mini-exceptions.c: updates for changed stack walk interface.
14102
14103 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14104
14105         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
14106
14107 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
14108
14109         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
14110
14111 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
14112
14113         * driver.c (mini_regression_list): Do not call mono_assembly_close 
14114         since assemblies can't be unloaded.
14115         
14116 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14117
14118         * cpu-amd64.md: Fix more instruction lengths.
14119
14120         * cpu-amd64.md: Fix lengths of some instructions.
14121
14122 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
14123
14124         * inssel.brg: Make the array ldelema check aot friendly.
14125
14126 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14127
14128         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
14129
14130         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
14131
14132 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
14133
14134         * mini-x86.c: Fix build.
14135
14136         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
14137         mono_type_get_underlying_type () helper function to simplify code.
14138         
14139 2004-09-09  Martin Baulig  <martin@ximian.com>
14140
14141         * mini-amd64.c: Don't access `type->data.klass' directly, call
14142         mono_class_from_mono_type() instead since the type may be a
14143         generic instance.
14144
14145 2004-09-09  Martin Baulig  <martin@ximian.com>
14146
14147         * mini-amd64.c (get_call_info): Fix support for generic instances.
14148         (add_valuetype): Use mono_class_from_mono_type() to get the class
14149         since we can be a generic instance.
14150
14151 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
14152
14153         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
14154
14155 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
14156
14157         * liveness.c: reset spill costs on each scan: bug 62107
14158
14159 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
14160
14161         * exceptions-sparc.c (mono_arch_find_jit_info): remove
14162         unnecessary line that doesn't compile
14163
14164 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
14165
14166         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
14167         trampolines, make them call an error function so people can fix their
14168         code.
14169
14170 2004-09-06  Martin Baulig  <martin@ximian.com>
14171
14172         * mini.c (mono_method_to_ir): When initializing locals, handle a
14173         generic instances like a valuetype if it's a valuetype and like a
14174         class if it's a class.
14175
14176 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14177
14178         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
14179         stack. Fixes #64674.
14180
14181         * exceptions.cs: Add test for unwinding of call arguments.
14182
14183 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
14184
14185         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
14186         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
14187         set the carry/borrow flag). The sparc and s390 implementations
14188         can now use optimized versions (and simplify the code). ppc bugfixes.
14189
14190 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14191
14192         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
14193
14194 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
14195
14196         * inssel-amd64.brg: Remove leftover 32 bit rule.
14197
14198         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
14199
14200 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
14201
14202         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
14203         mono_arch_find_jit_info functions into a new function. Fix a memory
14204         leak.
14205
14206         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
14207         refactored code.
14208         
14209 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14210
14211         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
14212         as well.
14213         
14214         * exceptions.cs: Add array size tests.
14215
14216         * mini.c: Allocate a separate icall wrapper for each arity of 
14217         mono_array_new_va. Fixes #59509.
14218
14219         * exceptions.cs: Add testcase for 64578.
14220
14221         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
14222
14223         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
14224         
14225 2004-09-02  Martin Baulig  <martin@ximian.com>
14226
14227         * mini.c (mono_method_to_ir): When initializing the locals, call
14228         handle_initobj() on the generic instance itself, not its
14229         underlying type.
14230
14231 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14232
14233         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
14234         MonoJitInfo for dynamic methods.
14235
14236         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
14237
14238         * mini.c: Add support for freeing JIT data for dynamic methods.
14239         
14240 2004-09-01  Martin Baulig  <martin@ximian.com>
14241
14242         * mini-x86.c (is_regsize_var): Added support for generic
14243         instances.
14244         (mono_arch_emit_prolog): Make this compile again, use
14245         `x86_push_imm_template (code)'.
14246
14247 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
14248
14249         * mini-x86.c: make all push_imm instructions that get
14250         patched always emit the long form
14251
14252 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
14253
14254         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
14255         in a per-domain hash.
14256
14257         * mini-amd64.c (merge_argument_class_from_type): Handle generic
14258         types.
14259
14260 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
14261
14262         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
14263         work.
14264         
14265         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
14266         work.
14267
14268         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
14269         Beginnings of SSE2 support.
14270
14271         * exceptions.cs: Add more tests for checked int<->uint casts.
14272
14273 2004-08-28  Martin Baulig  <martin@ximian.com>
14274
14275         * mini-x86.c (mono_arch_instrument_epilog): Added support for
14276         generic instances.
14277
14278         * mini.c
14279         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
14280         Handle generic instances recursively.
14281
14282 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14283
14284         * iltests.il: test for conv.u8 on a constant
14285
14286 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14287
14288         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
14289         LCONV_x4 (shrun_32 (membase)).
14290
14291 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14292
14293         * inssel-x86.brg: c&p rules for push/setret of long
14294
14295 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14296
14297         * inssel-x86.brg: c&p rules for compare (base, regvar) and
14298         compare (regvar, base)
14299
14300         * inssel-x86.brg: more burg love
14301
14302         * inssel.brg: more cleanup
14303
14304         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
14305
14306 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14307
14308         * basic-long.cs, basic-calls.cs: new tests for optimization.
14309
14310 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
14311
14312         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
14313         patch.
14314
14315 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14316
14317         * mini-amd64.c (read_tls_offset_from_method): Add another case.
14318         
14319 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
14320
14321         * inssel.brg (mini_emit_memcpy): use 
14322         NO_UNALIGNED_ACCESS to disable memcpy optimization
14323
14324 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14325
14326         * mini-amd64.c: Handle generic types in various places.
14327
14328         * mini.c (mono_method_to_ir): Handle generic types in init locals.
14329
14330 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
14331
14332         * mini.c (handle_box): Fix warning.
14333
14334         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
14335
14336         * mini-amd64.h: Enable the emit_state optimization.
14337
14338         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
14339
14340         * mini-amd64.c: Add some new 64 bit peephole opts.
14341
14342         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
14343
14344         * cpu-amd64.md: sreg1 of div instructions must be %rax.
14345
14346         * mini-amd64.c: Register allocator fixes.
14347
14348         * mini.c: Add an optimization to emit_state to avoid allocation of new
14349         registers on some platforms.
14350
14351 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
14352
14353         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
14354
14355         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
14356         allocation. Fixes #63085.
14357
14358         * basic-long.cs: Add new regression test.
14359
14360         * mini-amd64.c: Register allocator improvements.
14361
14362 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
14363
14364         * mini-amd64.c (read_tls_offset_from_method): Add another code
14365         sequence.
14366
14367         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
14368         instruction sequence for nullifying class init trampolines.
14369
14370         * objects.cs: Add new regalloc test.
14371
14372         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
14373
14374 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14375
14376         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
14377         
14378         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
14379         arguments.
14380
14381         * driver.c: Fix profiling after TLS changes.
14382         
14383         * driver.c (mono_main): Set mono_stats.enabled if needed.
14384
14385         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
14386         CEE_BOX.
14387
14388 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
14389
14390         * mini-x86.c: use a 1 op rather than a 2 op tls access
14391         instruction -> faster.
14392
14393 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14394
14395         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
14396         x86 backend.
14397
14398 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
14399
14400         * exceptions-sparc.c (throw_exception): fix typo
14401
14402 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
14403
14404         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
14405         set tree->dreg correctly with tls. Allow any
14406         register to be used.
14407
14408         * mini-x86.c (read_tls_offset_from_method): add new code
14409         generation pattern seen with GCC.
14410
14411
14412 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
14413
14414         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
14415         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14416         exceptions-sparc.c: fix some performance issues in exception
14417         handling and setting of the stack trace for exceptions that were
14418         already thrown.
14419
14420 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14421
14422         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
14423         x86 backend.
14424         
14425         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
14426         registers.
14427
14428 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
14429
14430         This patch inlines tls access, when possible.
14431         
14432         * mini.h: new arch functions for TLS intrinsics.
14433         All platforms updated with a stub.
14434
14435         * mini.c: use the new intrinsics
14436
14437         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
14438         arch specific intrinsic for tls variables
14439
14440 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14441
14442         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
14443         under windows.
14444
14445 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14446
14447         * mini.c: thread local allocation
14448
14449 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
14450
14451         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
14452
14453         * Makefile.am: Link against the static version of libmonogc.
14454         
14455         * Makefile.am: Link the static versions of the convenience libraries
14456         into the mono executable.
14457
14458         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
14459
14460 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
14461
14462         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
14463         on integer overflow.
14464
14465         * mini-amd64.c: Reorganize function call code.
14466
14467         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
14468
14469 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14470
14471         * inssel-x86.brg: use xor eax,eax.
14472         
14473         * basic.cs: new tests
14474
14475 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14476
14477         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
14478         in exception throwing code.
14479         
14480 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14481
14482         * inssel-x86.brg: use xor esi,esi.
14483
14484 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14485
14486         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
14487         can trace methods compiled during mini_init () too.
14488
14489         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
14490         CEE_CONV_U4.
14491
14492 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14493
14494         * Makefile.am: static link on x86 (r=zoltan)
14495
14496 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14497
14498         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
14499         code since it causes some programs to fail.
14500
14501 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
14502
14503         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
14504
14505 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14506
14507         * mini.c: ovfops_op_map - add STACK_OBJ case for
14508         CONV_I 
14509         * basic.cs: add test_0_pin_string as test
14510         case for above.
14511
14512 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14513
14514         * Makefile.am: build C# if srcdir != builddir
14515
14516 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
14517
14518         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
14519         fall-through blocks.
14520
14521 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
14522
14523         * driver.c: enable loop by default again and include abcrem in -O=all.
14524
14525 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
14526
14527         * iltests.il: Add some localloc tests.
14528
14529         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
14530
14531         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
14532         Fixes #62574.
14533
14534         * inssel-amd64.brg: Add some optimizations.
14535
14536         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
14537         for gcc-3.4.
14538
14539         * Makefile.am: Statically link mono against libmono on AMD64.
14540         
14541         * mini-amd64.c inssel-amd64.brg: Optimizations.
14542
14543 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
14544
14545         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
14546
14547         * tramp-amd64.c: Patch calling code in trampolines.
14548
14549 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
14550
14551         * mini-amd64.c: pinvoke struct passing fixes.
14552
14553 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
14554
14555         * mini-sparc.c: redo change, make mono_arch_cpu_init call
14556         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
14557
14558 2004-08-05  Duncan Mak  <duncan@ximian.com>
14559
14560         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
14561         CEE_LDELEM_ANY.
14562
14563 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14564
14565         * mini-amd64.c (emit_move_return_value): Move return value for normal
14566         calls too.
14567
14568 2004-08-05  Martin Baulig  <martin@ximian.com>
14569
14570         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
14571         `type->type'; just modify `type' itself when dealing with enums
14572         and generic instances.
14573         (check_call_signature): Make `simple_type' a `MonoType *'.
14574
14575 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14576
14577         * mini.c: Use OP_PADD to add offsets to addresses.
14578
14579         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
14580
14581 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
14582
14583         * mini-sparc.c (mono_arch_emit_epilog): fix check
14584         for folding last op into restore instruction
14585
14586 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14587
14588         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
14589         helper methods using the code manager.
14590         
14591         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
14592
14593         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
14594
14595 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14596         
14597         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
14598           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
14599
14600         * mini-s390.c: fix tail processing
14601
14602 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
14603
14604         * mini-ppc.c: mul.ovf.un exception name fix.
14605
14606 2004-08-03  Martin Baulig  <martin@ximian.com>
14607
14608         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
14609         instances; before jumping to `handle_enum', also modify `ptype'.
14610
14611 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
14612
14613         * cpu-sparc.md: fcall maximal length too small.
14614
14615 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
14616
14617         * mini-amd64.c mini.h: Add initial support for passing/returning 
14618         structures to/from pinvoked methods.
14619
14620 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
14621
14622         * mini-ppc.c: reg allocator fix.
14623
14624 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
14625
14626         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
14627
14628         * inssel.brg: Optimize memset on 64 bit machines.
14629
14630         * mini-amd64.c: Fix some vararg cases.
14631
14632 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14633
14634         * mini-s390.c: Corrected macro in emit_float_to_int
14635
14636         * s390-abi.cs: Tests to exercise the s390 ABI
14637
14638 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14639
14640         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
14641         caller saved regs.
14642
14643         * basic.cs: Add a test for add.ovf.un.
14644
14645 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
14646
14647         * mini-sparc.c: add case for OP_IDIV_UN
14648
14649 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14650
14651         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
14652         
14653         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
14654
14655 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
14656
14657         * basic.cs: regression tests.
14658
14659         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
14660         regressions.
14661
14662 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14663
14664         * basic.cs: Add a new test.
14665
14666         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
14667         and AOT. Various fixes and optimizations.
14668
14669         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
14670
14671 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
14672
14673         * mini-ppc.c: make sure temp regs are not used for global reg
14674         allocation.
14675
14676 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
14677
14678         * cpu-sparc.md: conv_i8 fix for 64bits
14679
14680         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
14681
14682 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
14683         
14684         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
14685         add opcode for cmp BYTE PTR [eax], imm.
14686
14687         * inssel.brg: Make memcpy and memset takes bases.
14688
14689 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14690
14691         * *-amd64.*: More AMD64 work.
14692         
14693 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14694
14695         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
14696         add a compare-not-equal opcode.
14697         
14698 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
14699
14700         * mini.c: Use mono_init_from_assembly instead of mono_init.
14701         
14702 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14703
14704         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
14705
14706         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
14707
14708         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
14709
14710         * inssel.brg: 64 bit fixes.
14711
14712         * mini.h (MonoCallInst): Add some AMD64 specific data.
14713
14714         * mini.h: Add some OP_P opcodes.
14715
14716 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14717
14718         * basic.cs: tests for 61797 and 61740
14719
14720 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
14721
14722         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
14723         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
14724
14725 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
14726
14727         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
14728
14729         * *-amd64*.*: Ongoing AMD64 work.
14730
14731 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
14732
14733         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
14734
14735         * *-amd64*: Ongoing AMD64 work.
14736
14737         * mini-arch.h: Add AMD64 support.
14738
14739         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
14740
14741         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
14742
14743         * mini-ops.h: Add new opcodes.
14744
14745         * Makefile.am: Add AMD64 support.
14746
14747         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
14748         rules into the inssel-long*.brg files.
14749
14750         * *-amd64.*: Add beginnings of AMD64 backend.
14751
14752 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
14753
14754         * mini.c (print_dfn): commenting out the code that prints
14755         the cil. With -O=deadce, this makes -v -v crash.
14756         
14757         * cpu-pentium.md: make checkthis have a length of 2
14758
14759 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
14760
14761         * mini-sparc.h: fix implementations of __builtin
14762         functions for Sun compiler for V9.
14763
14764 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
14765
14766         * mini.c: use the new stelem.ref wrapper
14767         * exceptions.cs, arrays.cs: new stelem.ref tests
14768
14769 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14770
14771         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
14772         new XSP should work with these changes).
14773
14774 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
14775         
14776         * inssel-{long32,x86,}.brg: trivial optimizations.
14777         
14778 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
14779
14780         * mini.c: load value when emitting box operation in
14781         constrained calls.
14782
14783 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
14784
14785         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
14786         is one byte shorter than cmp DWORD PTR [eax], 0.
14787
14788 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
14789
14790         * inssel-ppc.brg: arguments on the stack are always
14791         relative to the stack pointer (spotted by Neale Ferguson).
14792
14793 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14794
14795         * exceptions-x86.c: delay appending the method name to the trace until
14796         after mono_jit_info_table_find is called, as this gets the real
14797         MonoMethod.
14798
14799 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
14800
14801         * aot.c: register roots
14802
14803 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14804
14805         * aot.c : I could just use PLATFORM_WIN32 flag.
14806
14807 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14808
14809         * aot.c : Reverting the previous fix. This time it broke linux build.
14810
14811 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14812
14813         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
14814
14815 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
14816
14817         * mini.c (handle_stack_args): Remove some more debugging code.
14818         
14819         * mini.c (handle_stack_args): Remove debug output left in by mistake.
14820
14821         * driver.c mini.h aot.c: Allow additional options to be specified with
14822         --aot and pass them to mono_compile_assembly.
14823
14824         * aot.c: Add experimental code to AOT compile all loaded assemblies
14825         on demand and save the code into a cache in the filesystem.
14826
14827         * aot.c: Add support for more wrapper methods.
14828         
14829         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
14830         58863.
14831
14832         * cpu-*.md: Remove removed opcodes.
14833
14834         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
14835         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
14836         related icalls to marshal.c.
14837
14838 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
14839
14840         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
14841
14842         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
14843
14844         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
14845
14846 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
14847         * liveness.c: If liveness is recomputated we need to reset the information
14848         for each variable. This way, if the liveness range has been narrowed
14849         by optimizations that happened after the last computation, we can return
14850         a smaller range.
14851         
14852         For example, if you have
14853         
14854         {
14855                 int i = 0;
14856                 
14857                 // Tons of code that does not affect i
14858                 
14859                 i = foo ();
14860                 ...
14861         }
14862         
14863         i = 0 is dead code and will be removed by SSA. However, when
14864         linear scan gets to the code, i will still appear to be live
14865         throughout the entire block. This prevents good register allocation.
14866
14867 2004-07-06  Martin Baulig  <martin@ximian.com>
14868
14869         * debug-mini.c (mono_debug_init_method): Allow
14870         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
14871         (mono_debug_add_icall_wrapper): New method.
14872
14873         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
14874
14875 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
14876
14877         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
14878         optimization.
14879
14880 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
14881
14882         * aot.c (mono_aot_load_method): Fix loading of debug info.
14883
14884 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14885
14886         * aot.c: Add logging support.
14887
14888 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14889
14890         * mini.h: Add prototype for mono_print_method_from_ip.
14891
14892         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
14893
14894         * inssel.brg: 64 bit fixes.
14895
14896         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
14897         inssel-long32.brg.
14898
14899         * Makefile.am: Add SPARC64 support.
14900
14901 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14902
14903         * aot.c: Fix alignment problems on 32 bit platforms.
14904
14905 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14906
14907         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
14908         SPARC64.
14909
14910         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
14911         problems.
14912
14913         * mini.h: Bump AOT file version. Some 64 bit fixes.
14914
14915 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14916
14917         * inssel-sparc.brg: Add new rule to avoid register moves.
14918
14919         * inssel.brg: Add ldind_to_load_membase helper function.
14920
14921 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
14922
14923         * mini.c: OffsetToStringData intrinsic.
14924         
14925 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14926
14927         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
14928
14929         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
14930         regression tests.
14931
14932         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
14933 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
14934
14935         * mini.c: reinstated mono_compile_get_interface_var()
14936         on x86, too, since the change breaks the Gtk# build there as well.
14937
14938 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14939
14940         * driver.c: remove loop from the default optimizations: it seems to
14941         interact badly with some of the other options (see bug #60613).
14942
14943 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
14944
14945         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
14946         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
14947
14948 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
14949
14950         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
14951         vararg-using methods.
14952
14953 2004-06-21  Martin Baulig  <martin@ximian.com>
14954
14955         * mini/mini-exceptions.c
14956         (mono_handle_exception): Added `gpointer original_ip' argument.
14957         After calling mono_unhandled_exception(), call
14958         mono_debugger_unhandled_exception() and if that returns true,
14959         restore the context and return.
14960
14961 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
14962
14963         * mini-ppc.c: prefer the use of relative branches so
14964         they won't need to be patched in aot code (patch from Patrick Beard).
14965
14966 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
14967
14968         * aot.c: patch from Patrick Beard to make the output assembly
14969         more correct for the MacOSX assembler. Small tweak to
14970         generate sane images on Linux/PPC, too.
14971
14972 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14973
14974         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
14975         case until bug #59509 is fixed (shows up in #60332).
14976
14977 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
14978
14979         * mini.c: make sure the needed wrappers are compiled, too, with
14980         precomp.
14981
14982 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
14983
14984         * driver.c: remove NPTL reference in --version output.
14985
14986 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14987
14988         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
14989         generate valid assembly for the Mach-O assembler.
14990
14991 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
14992
14993         * driver.c: don't include abcrem in the all optimization specifier
14994         since it slows down jit compilation too much for now.
14995
14996 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
14997
14998         * mini.c: use BIGMUL only if both operands have the same signage.
14999         * iltests.il: Test for bug 60056. (errors related to signage in
15000         BIGMUL).
15001
15002         r=lupus.
15003
15004 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
15005
15006         * mini.c, aot.c: memory leak fixes.
15007
15008 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15009
15010         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
15011
15012 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
15013
15014         * Makefile.am: remove the -static hack completely, it links in
15015         statically glib as well.
15016
15017 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
15018
15019         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
15020         * exceptions.cs: make it compile with new mcs/csc.
15021
15022 2004-06-03 Massimiliano Mantione <massi@ximian.com>
15023         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
15024         and added relevant test case.
15025
15026 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
15027
15028         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
15029         regressions in gtk-sharp.
15030
15031 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
15032
15033         * exceptions.cs: New regression tests.
15034
15035         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
15036
15037 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
15038
15039         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
15040
15041 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
15042
15043         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
15044
15045         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
15046
15047 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
15048
15049         * mini.c (mono_jit_runtime_invoke): Init class in this
15050         method instead of trusting mono_jit_compile_method to
15051         do the work (because wrappers can be in object class)
15052
15053 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
15054
15055         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
15056
15057         * basic-long.cs: New regression test.
15058
15059 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
15060
15061         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
15062         and div/rem checks.
15063
15064 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
15065
15066         * Makefile.am: fix miguel's change to build mono statically against
15067         libmono (track build dependencies).
15068
15069 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15070
15071         * cfold.c: Some glib versions do not have G_MININT32.
15072
15073 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
15074
15075         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
15076         with precision of tan, atan, sin and cos, and implemented related
15077         regressions tests (fixes bug 54467, but one new problem appeared and
15078         is not fixed yet).
15079
15080 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15081
15082         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
15083
15084         * exceptions.cs: Add test for constant folding && division by zero.
15085
15086         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
15087         since driver.c is in libmono too, so the optimization was useless.
15088
15089         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
15090         variable to driver.c so the compiler can emit more efficient code to
15091         access them.
15092
15093 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15094
15095         * Makefile.am: don't distribute generated inssel.[ch] files.
15096
15097 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
15098
15099         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
15100         into the default appdomain. Fixes #58707.
15101
15102         * jit-icalls.c: Remove the broken approximation for truncl, doing
15103         no conversion is better.
15104
15105         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
15106         Fixes #58863.
15107
15108 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
15109
15110         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
15111         of the mcrxr instruction which is not available on some processors
15112         even if it's documented to be. Implement add and sub overflow correctly
15113         (still not complete for long unsigned). Speed up icalls a bit.
15114
15115 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
15116
15117         * mini.c (mono_jit_compile_method_with_opt): Make sure that
15118         we run .cctor in the current domain instead of target_domain.
15119         
15120         Fixes bug #58558, .cctor not being called in -O=shared.
15121
15122 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15123
15124         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
15125
15126 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
15127
15128         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
15129         which can be done with an imm8, do it that way.
15130         (mono_arch_output_basic_block): ditto for a jmp
15131         (mono_arch_emit_prolog): Computate maximum offset of a label.
15132
15133 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
15134
15135         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
15136         now tries to allocate prefered physical reg's for virtual
15137         regs. This reduces the number of emited spills/loads with
15138         20-30% on our core assemblies.
15139
15140 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15141
15142         * jit-icalls.c: truncl() is not needed and trunc() is
15143         the correct thing to do anyway (bug #58287).
15144
15145 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
15146
15147         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
15148         if available.
15149
15150 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
15151
15152         * driver.c: enable loop optimizations by default.
15153
15154 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
15155
15156         * mini-x86.c: fix calc of max loop size when aligning loops start.
15157
15158 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
15159
15160         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
15161         the stack.
15162
15163 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
15164
15165         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
15166         should set carry.
15167
15168         * basic-long.cs: Add tests for add/subtract of immediates with carry.
15169
15170         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
15171         
15172         * mini.c (inline_method): Allways inline some wrappers even if the cost
15173         is too large. Fixes #58785.
15174
15175         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
15176         
15177 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
15178
15179         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
15180         (crichton@gimp.org). Beginning of support for sparc/linux.
15181
15182         * mini-sparc.c: Optimize retrieval of LMF address.
15183
15184 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
15185
15186         * exceptions-ppc.c:  handle alloca in methods with clauses.
15187
15188 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
15189
15190         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
15191
15192 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
15193
15194         * mini.c: Delegate most of the abort signal work to 
15195           mono_thread_request_interruption, which also handles Stop and Suspend
15196           states.
15197
15198 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
15199
15200         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
15201         supports the save/restore lmf opcodes.
15202
15203 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
15204
15205         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
15206         by gcc-3.4 as well.
15207
15208         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
15209
15210 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15211
15212         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
15213         methods which contain array accesses.
15214
15215         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
15216         boundaries. Fixes #58537.
15217
15218         * iltests.il: Add regression test for #58537.
15219
15220 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
15221
15222         * mini-x86.c (mono_arch_local_regalloc): Last part of
15223         fix for bug #58633 (releasing register to early).
15224
15225 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
15226
15227         * basic-long.cs: Add new regression test.
15228
15229 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
15230
15231         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
15232         register too early on the chain.
15233
15234 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15235
15236         * mini.c (create_helper_signature): Use a helper function to reduce
15237         the code which needs to be written. Also set the calling convention of
15238         icalls on windows. Fixes #57840.
15239
15240 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
15241
15242         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
15243         exceptions-ppc.c: added helper function to get the instruction address
15244         from a signal handler context.
15245
15246 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15247
15248         * helpers.c: use g_get_tmp_dir. Invokes happyness 
15249         from gonzalo.
15250
15251 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15252
15253         * helpers.c: Add new env variable to pass args to objdump.
15254         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
15255
15256 2004-05-17  Radek Doulik  <rodo@ximian.com>
15257
15258         * Makefile.am (common_sources): added abcremoval.h so it get
15259         disted and daily mono packages on go-mono.com will build again
15260
15261 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
15262
15263         * abcremoval.c: Fixed coding style, added copyright header.
15264
15265         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
15266
15267         * mini.h: Added prototype for abc removal main function.
15268
15269         * build_relations_propagation_table.pl: Added copyright header.
15270
15271 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
15272
15273         * basic-long.cs: reg test for complex ceq_long bug.
15274
15275 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
15276
15277         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
15278         reg in long and clob case (bug #58343). Fixed/added comments.
15279
15280 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
15281
15282         * mini.c (mono_jit_runtime_invoke): Follow new convention
15283         of calling the invoke method with an function pointer.
15284
15285 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
15286
15287         * ChangeLog: Fix author of memory leak patch.
15288
15289 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
15290
15291         * Makefile.am: fix make dist as well...
15292
15293
15294 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
15295
15296         * cfold.c: Made so that conversions from pointer to int4 are no-ops
15297         on archs where pointers are 4 bytes long.
15298
15299         * Makefile.am: Added abcremoval.c source file.
15300
15301         * abcremoval.c: Added abcremoval.c.
15302
15303         * abcremoval.h: Added abcremoval.h.
15304
15305         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
15306
15307         * inssel.brg: Enabled bounds check removal.
15308
15309         * mini.c: Added support for abcrem optimization.
15310
15311         * mini.h: Added abcrem optimization label.
15312
15313         * driver.c: Added support for abcrem optimization.
15314
15315         * propagated_relations_table.def: Added propagated_relations_table.def.
15316
15317 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
15318
15319         * mini.c, cfold.c: fix style.
15320
15321 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15322
15323         * mini.c: handle issue with the low-level implementation of
15324         some long opcodes (bug #54209).
15325
15326 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
15327
15328         * basic.cs: test for my new cmov stuff.
15329
15330 2004-05-13      Patrik Torstensson
15331
15332         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
15333         opt and added peephole documentation.
15334
15335 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
15336
15337         * tramp-ppc.c: rewrote the generic trampoline code.
15338
15339 2004-05-11      Patrik Torstensson
15340
15341         * mini-x86.c: optimize long shl/shr asm code (one less branch)
15342
15343 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
15344
15345         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
15346
15347         * mini.h mini.c dominators.c: Applied patch from Derek Woo
15348         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
15349
15350         * mini.c: Add new icalls for AsAny marshalling.
15351
15352 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
15353
15354         * tramp-ppc.c, mini-ppc.c: more cleanups.
15355
15356 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15357
15358         * mini.c: no warnings.
15359
15360 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15361
15362         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
15363
15364 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
15365
15366         * mini.c: In the thread abort signal handler, if the thread is in the
15367         process of being stoped, don't throw the Abort exception, just stop the
15368         thread.
15369
15370 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
15371
15372         * tramp-ppc.c: removed old code.
15373
15374 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15375
15376         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
15377         do some simple speed optimizations on ppc.
15378
15379 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
15380
15381         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
15382         and large offsets in load/store.
15383
15384 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15385
15386         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
15387         it causes regressions.
15388
15389 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15390
15391         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
15392         support.
15393
15394 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15395
15396         * jit-icalls.c: remove warnings.
15397         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
15398         speedups for unsafe code.
15399
15400 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
15401
15402         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
15403
15404 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
15405
15406         * basic-calls.cs: Add new regression test.
15407
15408         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
15409         more portable.
15410
15411         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
15412
15413         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
15414         is no longer used.
15415
15416 2004-05-06      Patrik Torstensson
15417
15418         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
15419         long reg allocation in any reg (not only eax:edx) and implemented 
15420         long shl/shr ops in asm instead of helpers.
15421
15422 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
15423
15424         * mini-sparc.h: Fix warnings.
15425
15426         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
15427         stack.
15428
15429         * mini-exceptions.c (mono_handle_exception): Call the filter in a
15430         separate statement for clarity.
15431
15432         * mini-sparc.c: Update status.
15433
15434 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
15435
15436         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
15437         here.
15438
15439 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15440
15441         * inssel-ppc.brg: another small pre-release workaround:
15442         we don't do overflow detection for long_sub_un.
15443
15444 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15445
15446         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
15447         (also works around a weird ppc bug: 57957).
15448
15449 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
15450
15451         * tramp-ppc.c: trampoline fixes.
15452
15453 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
15454
15455         * mini-ppc.c: fixed typos.
15456
15457 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
15458
15459         * mini-ppc.c, exceptions-ppc.c: more code saves registers
15460         at the top of the stack. Fixed typos. Use a frame registers
15461         for all the methods with exception clauses.
15462
15463 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15464
15465         * exceptions-ppc.c: restore fp registers.
15466
15467 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
15468
15469         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
15470         order from the stack top (moved the stack room to save the
15471         return value for trace after the param area). Fixed corruption
15472         in restoring registers on unwind.
15473
15474 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15475
15476         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
15477
15478 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15479
15480         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
15481         and prolog/epilog for methods that use it. Allow
15482         enough param area room for varargs methods. Fix miguel's
15483         breakage in exception handling.
15484
15485 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15486
15487         * Makefile.am: run genmdesc only on current arch.
15488
15489 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15490
15491         * exceptions-x86.c:
15492         * mini-x86.h: fix the build on windows.
15493
15494 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
15495
15496         * 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.
15497
15498         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
15499
15500         * mini-exceptions.c: New file.
15501         
15502         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
15503         Move some parts of the x86 exception handling code to an 
15504         arch-independent file so it can be shared with other ports.
15505
15506 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
15507
15508         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
15509
15510 2004-04-26  David Waite  <mass@akuma.org>
15511
15512         * driver.c: remove comma from end of enumeration declaration
15513
15514 2004-04-26  Jackson Harper  <jackson@ximian.com>
15515
15516         * driver.c: parse config file before loading first assembly. This
15517         allows the user gac to be enabled/disabled. 
15518         
15519 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
15520
15521         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
15522         simpler mechanism: we do not care what is encoded initially
15523         (branch absolute or relative), we care about the code and its
15524         target.  I kept the old code for reference for now.
15525
15526         The new code tries first to determine if the jump is anywhere in
15527         the -/+32 absolute meg range, if it succeeds, it encodes using the
15528         absolute branch;  If not, it tried to find something in the
15529         relative range, if not, it uses the handle_thunk code. 
15530
15531 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
15532
15533         * exceptions-ppc.c: use the correct ip register on macosx.
15534
15535 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
15536
15537         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
15538
15539 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
15540
15541         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
15542         Raise exception on integer divide by zero by hand since the hw
15543         doesn't support it. Handle NaNs in FP compares.
15544
15545 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
15546
15547         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
15548         code reducing duplication between the platforms and enabled
15549         signal exception handling (on linux for now).
15550
15551 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
15552
15553         * exceptions-ppc.c: more macosx support.
15554
15555 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15556
15557         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
15558
15559 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
15560
15561         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
15562
15563 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
15564
15565         * iltests.il: more tests.
15566
15567 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15568
15569         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
15570         vars as well.
15571
15572 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
15573
15574         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
15575
15576 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15577
15578         * liveness.c: Mark variables as volatile in all basic blocks reachable
15579         from exception clauses.
15580
15581 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
15582
15583         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
15584         inlining.
15585
15586 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
15587
15588         * iltests.il, basic.cs: more tests for regalloc.
15589
15590 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15591
15592         * iltests.il: Some tests for register allocation modifications
15593         I have locally.
15594
15595 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
15596
15597         * exceptions.cs: Add regression test for bug #56782.
15598
15599         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
15600         original stack trace if an exception is rethrown. Fixes #56782. Oh,
15601         the beauty of fixing the same thing in 5 different files...
15602
15603 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
15604
15605         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
15606         methods.
15607
15608 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
15609
15610         * mini.c: Add support for STRWLPARRAY marshalling convention.
15611
15612 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
15613
15614         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
15615         to init the context to setup the regs pointer).
15616
15617 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15618
15619         * exceptions-ppc.c: more exceptions work.
15620
15621 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15622
15623         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
15624         not allowed.
15625
15626 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15627
15628         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
15629         can use the memory directly.
15630
15631         * cpu-pentium.md: Update documentation from a post from Zoltan. 
15632
15633         add x86_add_membase, x86_sub_membase, x86_mul_membase
15634
15635 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15636
15637         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
15638         GENERAL_REGS they were also hardcoded for all PPC ports.
15639
15640         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
15641
15642         Remove hard-coded limit for floating point registers, use
15643         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
15644
15645         Notice that in MacOS X calling conventions you can fit a lot more
15646         floating point values in registers, so I should update the PInvoke
15647         test to excercise the passing of floating point values on the
15648         stack (currently broken).
15649         
15650 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
15651
15652         * tramp-ppc.c (create_trampoline_code): Added
15653         JUMP_TRAMPOLINE_SIZE. 
15654         (ppc_magic_trampoline): Follow the pattern from
15655         x86_magic_trampoline: if code is set to zero, return. 
15656         (create_trampoline_code): Always pass MonoMethod to the jump
15657         trampoline, before it was passing a null.
15658         (mono_arch_create_jump_trampoline): Implement the jump stub, could
15659         share the code with mono_arch_create_jit_trampoline. 
15660
15661         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
15662         implemented.
15663         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
15664         implemented.  
15665
15666         * cpu-g4.md: Added length for jmp instruction, the worst case
15667         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
15668         for save_lmf).
15669
15670 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
15671
15672         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
15673
15674 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
15675
15676         * mini.c: Only set bblock->real_offset when adding a new bblock, and
15677         before each IL instruction.
15678
15679         * mini.c (CEE_BOX): Fix warnings.
15680
15681 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15682
15683         * mini.c: removed a few unused vars and extra whitespace.
15684
15685 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
15686
15687         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
15688         checks.
15689         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
15690         index.
15691         (OP_GETCHR): use the above
15692         (CEE_LDELEMA): use the above.
15693
15694         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
15695         version of the generic impl.
15696         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
15697         (CEE_LDELEMA): use the above.
15698
15699 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15700
15701         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
15702         Fixes #56317.
15703
15704         * iltests.il: Added new regression test for #56317.
15705
15706 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15707
15708         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
15709         under NetBSD. Fixes #56450.
15710
15711         * liveness.c (update_gen_kill_set): Fix previous patch.
15712
15713 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15714
15715         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
15716
15717 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
15718
15719         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
15720         ldsfld and ldsflda.
15721
15722         * inssel-sparc.brg: Add more optimizations.
15723
15724         * mini-sparc.c: Replace multiply/divide with shifts if possible.
15725
15726 2004-04-01  Martin Baulig  <martin@ximian.com>
15727
15728         * mini.c (handle_box): New static function; moved the
15729         implementation of CEE_BOX here.
15730         (mono_method_to_ir): Added `constrained_call' variable.
15731         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
15732         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
15733         mono_method_get_constrained() to get the method.
15734
15735 2004-04-01  Martin Baulig  <martin@ximian.com>
15736
15737         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
15738         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
15739         (mono_method_to_ir): We don't need these macros anymore since
15740         mono_class_get_full() already takes care of it. 
15741
15742 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15743
15744         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
15745         use @function (as doesn't accept #function here) and check the return
15746         value of system and stop if fails.
15747
15748 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15749
15750         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
15751
15752 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
15753
15754         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
15755
15756         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
15757
15758         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
15759         #56223.
15760
15761         * basic-long.cs: Add test for negation of Int64.MinValue.
15762
15763 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
15764
15765         * mini-sparc.c: Update status.
15766
15767         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
15768
15769         * exceptions-sparc.c: Fix return value in filters.
15770
15771         * inssel-sparc.brg: Fix register allocation in some rules.
15772
15773 2004-03-28  Martin Baulig  <martin@ximian.com>
15774
15775         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
15776         if neccessary.  
15777
15778 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
15779
15780         * mini-x86.c (mono_arch_patch_code): Fix warnings.
15781         
15782         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
15783         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
15784         remove unused conv_u4 opcode.
15785
15786         * mini-x86.c: Remove valgrind workaround since it slows down things
15787         even when mono is not run under valgrind.
15788
15789 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
15790
15791         * mini-sparc.c: Update status.
15792
15793         * inssel-sparc.brg: Add some optimizations.
15794
15795         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
15796         future delay slot filling. Add support for varargs, tail calls and JMP.
15797
15798         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
15799         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
15800
15801         * inssel.brg: Fix register allocation in OP_ARGLIST.
15802
15803         * inssel.brg: Fix warnings.
15804
15805 2004-03-25  Martin Baulig  <martin@ximian.com>
15806
15807         * mini.c (inflate_generic_field): Removed.
15808         (mini_get_method): Removed, use mono_get_method_full(),
15809         (mini_get_class): Removed, use mono_class_get_full().
15810         (mono_method_to_ir): Pass our generic context to
15811         mono_field_from_token().        
15812
15813 2004-03-25  Martin Baulig  <martin@ximian.com>
15814
15815         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
15816         of a `MonoMethod *'.
15817         (mini_get_method): Take a `MonoGenericContext *' instead
15818         of a `MonoMethod *'.
15819         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
15820         a new local variable called `generic_context' which holds the
15821         current `MonoGenericContext *'; use it to lookup things.
15822
15823 2004-03-24  Martin Baulig  <martin@ximian.com>
15824
15825         * mini.c (mini_get_class): New static method; if we're inside a
15826         generic instance, inflate the class if neccessary.
15827         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
15828
15829 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
15830
15831         * iltests.il: New regression test for #55976.
15832
15833         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
15834         #55976.
15835
15836 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15837
15838         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
15839         output.
15840
15841 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15842
15843         * liveness.c: Consider SSA stores as well as loads when making vars
15844         volatile.
15845
15846         * exceptions.cs: New regression tests for register allocation.
15847         
15848 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
15849
15850         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
15851         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
15852           domain lock only to protect puntual access to data structures.
15853           Added access lock for sighash, jit_icall_hash_name, 
15854           jit_icall_hash_addr and domain->code_mp.
15855
15856 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
15857
15858         * driver.c: Print SIGSEGV handling method.
15859
15860         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
15861
15862         * mini.c (setup_jit_tls_data): Handle case when this is called
15863         multiple times for a thread.
15864
15865         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
15866         is different from fbxx_un. Fixes #54303. Also use constants instead of
15867         magic numbers in a lot of places.
15868
15869 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
15870
15871         * exceptions.cs: Fix cctor test when --regression is used.
15872
15873 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
15874
15875         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
15876         for Linux/ppc.
15877
15878 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
15879
15880         * inssel-ppc.brg: fixed register assignments for some rules.
15881
15882 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15883
15884         * exceptions.cs: Add test for exceptions in static constructors.
15885
15886         * mini.c (mono_jit_compile_method_with_out): Move the calling of
15887         static constructors outside the domain lock. Fixes #55720.
15888
15889 2004-03-17  Martin Baulig  <martin@ximian.com>
15890
15891         * mini.c (get_generic_field_inst): Removed, this'll never happen.
15892         (inflate_generic_field): Take the `MonoMethod *' instead of the
15893         `MonoClass *' and added support for generic method.
15894         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
15895         have a `field->parent->gen_params', only inflate the field if it's
15896         an open constructed type.
15897
15898 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15899
15900         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
15901         exception object instead of the preconstructed ones.
15902
15903 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15904
15905         * mini.c: reverted changed to sigsegv_signal_handler commited
15906         accidentally in the previous patch.
15907
15908 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15909
15910         * mini.c:
15911         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
15912         running --aot with an old assembly.
15913
15914 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
15915
15916         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
15917         point values.
15918
15919         * mini-sparc.c: Add support for v9 branches with prediction.
15920
15921 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
15922
15923         * mini.c (mini_init): #warning is GNUC only
15924
15925         * mini-sparc.h: implement __builtin_frame_address
15926         and __builtin_return_address for Sun C compiler
15927
15928 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
15929
15930         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
15931
15932 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
15933
15934         * basic-calls.cs: Add test for unaligned byref long argument passing.
15935
15936         * mini-ops.h: Add sparcv9 compare and branch instructions.
15937
15938         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
15939         v9 instructions if we have a v9 cpu.
15940
15941         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
15942         registers for global allocation.
15943
15944         * exceptions-sparc.c: Fixes.
15945         
15946 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
15947
15948         * liveness.c (mono_analyze_liveness): Optimized version.
15949
15950         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
15951
15952         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
15953         sparc work.
15954
15955         * basic-float.cs basic-calls.cs: New regression tests.
15956
15957 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
15958
15959         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
15960         sigaltstack implementation.
15961
15962         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
15963         
15964         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
15965         stuff if SIGSEGV_ON_ALTSTACK is not defined.
15966
15967 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
15968
15969         * mini.c: Fix warnings.
15970         
15971         * mini.c (mono_resolve_patch_target): New function which contains the
15972         arch independent part of the patching process.
15973
15974         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
15975         patching code to a separate function.
15976
15977 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
15978
15979         * mini.c (add_signal_handler): ifdef out on Windows
15980
15981 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
15982
15983         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
15984         cpu-sparc.md: Add exception handling support + other fixes.
15985
15986         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
15987         typed GC detection in --version.
15988
15989         * basic.cs exceptions.cs: New regression tests.
15990
15991         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
15992         the arch specific code can store data during a compilation.
15993
15994         * mini-ops.h: Add OP_SETFRET.
15995
15996         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
15997         function, register a separate icall for each arity, so the icalls can
15998         get a wrapper.
15999         
16000         * mini.c (mono_print_tree): Print negative offsets in a more readable
16001         form.
16002         
16003         * mini.c: Make signal handling work on sparc.
16004         
16005         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
16006
16007         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
16008
16009         * jit-icalls.c: Emulate truncl by aintl on solaris.
16010
16011         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
16012
16013 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
16014
16015         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
16016
16017 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
16018
16019         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
16020         a MarshalByRef type, inline a method that performs the check, taking into
16021         account that the object can be a proxy. Also implemented tow new opcodes:
16022         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
16023         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
16024         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
16025
16026 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
16027
16028         * mini-ppc.c: if a relative branch displacement is too big
16029         but it points to and area reachable with an absolute branch, 
16030         avoid the thunks.
16031
16032 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
16033
16034         * mini.c: optimize small copies in cpblk.
16035
16036 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
16037
16038         * basic-calls.cs basic-float.cs: New regression tests.
16039
16040         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
16041         negative offsets from %fp. Implement localloc. Fix local register 
16042         allocation. Fix the case when the this argument needs to be saved to
16043         the stack. Implement some missing opcodes.
16044
16045 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
16046
16047         * mini.c (mini_method_compile): Reenable global regalloc in methods
16048         with exception handlers.
16049
16050         * linear-scan.c (mono_varlist_sort): Fix warning.
16051
16052         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
16053
16054         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
16055         regalloc costs.
16056
16057         * liveness.c: Make all variables uses in exception clauses volatile, to
16058         prevent them from being allocated to registers. Fixes #42136.
16059
16060 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
16061
16062         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
16063         causes regressions.
16064
16065         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
16066         argument to mono_arch_regalloc_cost.
16067
16068         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
16069         precisely.
16070
16071 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
16072
16073         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
16074         Make the cost of allocating a variable to a register arch dependent.
16075
16076         * basic-calls.cs: Fix compilation of tests.
16077         
16078         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
16079         helper function to cut back on the number of #ifdefs needed.
16080
16081         * mini-ppc.c: Fix compilation.
16082
16083         * basic-calls.cs: New regression tests.
16084
16085         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
16086
16087         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
16088         of l0 since that is callee saved.
16089
16090         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
16091         to virtual calls.
16092
16093         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
16094         of delay instruction.
16095
16096         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
16097
16098         * mini.h (MonoCallInst): Add 'virtual' flag.
16099
16100         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
16101
16102 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
16103
16104         * *.cs: New regression tests.
16105
16106         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
16107         work.
16108
16109         * mini.c (mono_runtime_install_handlers): Fix build.
16110
16111         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
16112         'signal_stack_size' members.
16113
16114         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
16115         alternate signal stack.
16116
16117         * exceptions-x86.c: Add stack overflow handling.
16118
16119         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
16120         functions to arch independent code.
16121
16122         * mini.c (mono_print_tree): Print more detailed info for load_membase
16123         opcodes.
16124         
16125 2004-02-23  Martin Baulig  <martin@ximian.com>
16126
16127         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
16128
16129 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
16130
16131         * mini-x86.c: fixed reg allocation for div/rem.
16132
16133 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
16134
16135         * driver.c (mono_main): Report some configuratio options on --version.
16136
16137 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
16138
16139         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
16140         low in the address space. Correctly flush memory in thunks where we
16141         output native code.
16142
16143 2004-02-20  Martin Baulig  <martin@ximian.com>
16144
16145         * mini.c (mini_get_method): New static method; inflate all generic
16146         methods and methods in open generic instances.
16147         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
16148         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
16149
16150 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
16151
16152         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
16153
16154         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
16155
16156 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
16157
16158         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
16159
16160         * mini-sparc.c (flushi mono_arch_output_basic_block): make
16161         it compile using Sun's compiler.
16162
16163 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
16164
16165         * 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.
16166
16167         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
16168
16169 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16170
16171         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
16172         code.
16173         * mini-ppc.c: handle calls outside of the allowed range with thunks
16174         allocated using the code manager.
16175         * tramp-ppc.c: use the code manager to hold generated native code.
16176         Fixed the magic trampoline to just patch vtable entries.
16177
16178 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
16179
16180         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
16181         independent file.
16182
16183 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
16184
16185         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
16186         PPC.
16187
16188         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
16189         if we have a working __thread implementation.
16190
16191         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
16192         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
16193
16194 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
16195
16196         * mini-x86.c: Fix compilation under gcc 2.
16197         
16198 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
16199
16200         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
16201         contains a call to the wrapped function.
16202
16203         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
16204         OP_<CALL>_IMM opcodes, and use them under X86.
16205         
16206         * mini.c (mono_jit_find_compiled_method): Fix warning.
16207
16208         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
16209
16210         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
16211
16212         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
16213         functionality to mini.c.
16214
16215         * mini.c (mono_create_jump_trampoline): New function to create a jump
16216         trampoline. Return a compiled method instead of a trampoline if it
16217         exists. Add a cache for jump trampolines.
16218
16219         * mini.c (mono_jit_find_compiled_method): New function to return a
16220         compiled method if it exists.
16221
16222         * mini-x86.c: Call mono_create_jump_trampoline instead of 
16223         mono_arch_create_jit_trampoline.
16224
16225         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
16226         a jump trampoline. Fixes #52092.
16227         
16228 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
16229
16230         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
16231         which is not up-to-date. Add check_corlib_version () instead.
16232
16233         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
16234         have to call it.
16235         
16236         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
16237         since newer valgrind versions do not need it.
16238
16239         * mini.c (mono_jit_compile_method_with_opt): New helper function to
16240         compile a method with a given set of optimizations.
16241
16242         * mini.c: Compile icall wrappers on-demand instead of at startup.
16243
16244         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
16245         wrapper for an icall.
16246
16247 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
16248
16249         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
16250         #54063.
16251
16252         * iltests.il: Add test for non-empty stack before switch instruction.
16253
16254 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
16255
16256         * mini.c: Add support for new stringbuilder marshalling conventions.
16257
16258         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
16259
16260 2004-02-01  Martin Baulig  <martin@ximian.com>
16261
16262         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
16263         in `ginst->mtype_argv'.
16264
16265 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
16266
16267         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
16268         facilitate grepping.
16269
16270 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
16271
16272         * mini.c: fixed buglet in initobj generic implementation for references.
16273
16274 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
16275
16276         * Makefile.am: make the version script conditional.
16277         * jit-icalls.c: handle missing truncl().
16278
16279 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
16280
16281         * exceptions.cs: Add more tests for double->int conversion.
16282
16283         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
16284         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
16285
16286 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
16287
16288         * driver.c: make --verbose --version emit an error
16289         if the loaded corlib doesn't match the runtime version.
16290
16291 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
16292
16293         * mini-ppc.h: export ppc_patch().
16294         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
16295         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
16296         on par or better than on MacOSX.
16297
16298 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
16299
16300         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
16301         mono_lookup_pinvoke_call.
16302
16303         * mini-x86.c: Under windows, the default pinvoke calling convention is
16304         stdcall. Fixes #52834.
16305
16306         * mini.c (optimize_branches): Add an upper bound to the number of
16307         iterations to prevent infinite loops on strange loops. Fixes #53003.
16308
16309 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
16310
16311         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
16312         and ISINST. Fixes #52093.
16313
16314         * objects.cs (test_0_vector_array_cast): New tests.
16315         
16316 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
16317
16318         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
16319         checking in Array.Set ().
16320
16321         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
16322         #52590.
16323
16324         * object.cs (test_0_multi_array_cast): New regression test.
16325
16326 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
16327
16328         * exceptions-ppc.c: fix build on Linux/PPC.
16329
16330 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
16331
16332         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
16333         running under valgrind.
16334         (x86_magic_trampoline): Fix build bustage.
16335
16336         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
16337         negative values as well. This is needed for the encoding of the line number
16338         info, since sometimes the line numbers are not in increasing order.
16339
16340 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
16341
16342         * cpu-pentium.md (localloc): Increase the size of the localloc 
16343         instruction since it is a loop under Win32.
16344
16345         * debug-mini.c (record_line_number): Get rid of unneccesary memory
16346         allocation.
16347
16348 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
16349
16350         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
16351         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
16352         Max Horn (max@quendi.de). Fix file names in comments.
16353
16354 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
16355
16356         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
16357         avoid stack overflow.
16358         (replace_usage): Avoid uninitialized variable warnings.
16359
16360         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
16361         and taking the address of valuetype variables.
16362
16363 2004-01-03  Patrik Torstensson
16364
16365         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
16366         for other purposes than FP later on.
16367
16368 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
16369
16370         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
16371         of tail calls.
16372
16373 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16374
16375         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
16376
16377 2003-12-30  Patrik Torstensson <p@rxc.se>
16378
16379         * mini-x86.h: Decreased number of availiable fp regs.
16380         Solves corner cases with FP spilling.
16381
16382 2003-12-23  Patrik Torstensson <p@rxc.se>
16383
16384         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
16385         for floating point stack tracking / spilling on x86. 
16386         Fixes bug #49012.
16387         
16388         * basic-float.cs: added float mul overflow test.
16389
16390 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
16391
16392         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
16393
16394 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16395
16396         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
16397         supports for cond branches that overflow the immediate
16398         overflow offset. mcs can compile simple programs.
16399
16400 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16401
16402         * exceptions-ppc.c: exception handling support wip:
16403         finally handlers get run on exception.
16404
16405 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
16406
16407         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
16408         profiling.
16409
16410 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16411
16412         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
16413         initial support for stack walking and unwinding.
16414
16415 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
16416
16417         * driver.c (mono_main): Make corlib-out-of-sync message more 
16418         descriptive. Also remove verify_corlib call.
16419
16420 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16421
16422         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
16423         not overlap with other call's arguments, too.
16424
16425 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
16426
16427         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
16428         move to arch-specific code the choice of arch-specific
16429         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
16430         * mini.c: ensure emulation calls will not interleave
16431         with other calls.
16432
16433 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
16434
16435         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
16436         the magic trampoline stack frame is dropped before executing
16437         the new method.
16438
16439 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
16440
16441         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
16442         and integer to fp conversions. Added support for overflowing
16443         arguments on the stack. Reserve a couple more registers as temps.
16444         Added support for aot compilation (as output still needs to be
16445         tweaked, though).
16446
16447 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16448
16449         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
16450         Don't overwrite return register in some corner cases.
16451
16452 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
16453
16454         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
16455         static constructors when AOT compiling.
16456
16457         * driver.c (mono_main): Call mono_check_corlib_version.
16458
16459 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16460
16461         * cpu-g4.md, basic.cs: fixed div target register.
16462
16463 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
16464
16465         * mini-ppc.c, basic.cs: shl_imm fix with test.
16466
16467 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16468
16469         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
16470         structures by value. Misc fixes.
16471         * objects.cs: more tests.
16472
16473 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
16474
16475         * mini-ppc.c: lconv.ovf.i implemented.
16476
16477 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16478
16479         * mini.c:
16480         (mini_init): don't error out if someone already called g_thread_init.
16481
16482 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16483
16484         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
16485         to be any type per the spec. Fix abnormal memory usage when
16486         the same object is repeatedly thrown.
16487
16488 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
16489
16490         * mini.c: check for overruns in IL code.
16491
16492 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
16493
16494         * TODO: Add/remove some todo entries.
16495
16496 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
16497
16498         * driver.c (mono_main): Call mono_verify_corlib.
16499
16500 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
16501
16502         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
16503         This has been moved to mini.c
16504         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
16505         type being casted is marshalbyref it could be a proxy, so instead of
16506         emitting the type check code, emit a call to a runtime method that will
16507         perform the check by calling CanCastTo if needed.
16508
16509 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
16510
16511         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
16512         methods with large stack frames under Win32.
16513
16514 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
16515
16516         * Makefile.am: Distribute regression tests.
16517
16518         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
16519         at the end instead of inserting each variable into the sorted list.
16520
16521         * linear-scan.c (mono_varlist_sort): New helper function.
16522         
16523 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16524
16525         * mini.c: ensure arguments and locals are within bounds.
16526
16527 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16528
16529         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
16530         related fixes.
16531
16532 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16533
16534         * mini.c (mono_cprop_copy_values): Fix crash.
16535
16536         * aot.c: Set verbosity back to 0.
16537         
16538 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16539
16540         * regalloc.c: complete memory leak fix by Laurent Morichetti
16541         (l_m@pacbell.net).
16542
16543 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16544
16545         * driver.c (main_thread_handler): Revert the previous patch.
16546
16547         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
16548         under valgrind.
16549
16550         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
16551         memory from the memory pool.
16552
16553         * driver.c (main_thread_handler): Turn on all optimizations when
16554         --aot is used.
16555
16556         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
16557         an array for better performance.
16558
16559         * regalloc.c (mono_regstate_assign): Fix memory leak.
16560
16561         * debug-mini.c (mono_debug_serialize_debug_info): New function to
16562         serialize the debug info.
16563
16564         * debug-mini.c (mono_debug_add_aot_method): New function to load the
16565         debug info from the serialized representation.
16566
16567         * aot.c: Save debug info into the generated file and load it when 
16568         loading a method.
16569
16570         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
16571
16572 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16573
16574         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
16575         More FP-related fixes.
16576
16577 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
16578
16579         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
16580         and register allocation buglet. Hello world now runs.
16581
16582 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16583
16584         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
16585         * tramp-ppc.c: fixed class init trampoline.
16586         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
16587
16588 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16589
16590         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
16591         mini.c: more ppc changes/fixes.
16592
16593 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16594
16595         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
16596         Also optimize the case when the arguments are the same in the caller 
16597         and in the callee.
16598
16599         * iltests.il: Add tests for tail calls with valuetype arguments.
16600
16601 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16602
16603         * mini-ppc.c: fixes for struct return type.
16604
16605 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
16606
16607         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
16608         mono_spillvar_offset() to arch-specific code.
16609
16610 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
16611
16612         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
16613
16614 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16615
16616         * exceptions-x86.c: Fix stack space leaks.
16617         
16618         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
16619         registers from the lmf if the method has save_lmf set.
16620
16621 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
16622
16623         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
16624         of icall wrappers into InvokeInDomain, since these are now per-domain.
16625
16626 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
16627
16628         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
16629         make some opcode emulation and intrinsic ops enabled/disabled 
16630         according to the architecture. More fixes.
16631
16632 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
16633
16634         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
16635
16636 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16637
16638         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
16639         arch-specific handling for 'this' and struct return type to
16640         arch-specific code.
16641
16642 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16643
16644         * aot.c: prevent divide by zero error when reporting (it happened with
16645         Accessibility.dll).
16646
16647 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
16648
16649         * mini.h (inst_switch): Remove unused macro.
16650
16651 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16652
16653         * aot.c:
16654         (load_aot_module): free 'info->methods' and 'info' properly. No more
16655         "free(): invalid pointer blah" messages when you have an old aot
16656         compiled assembly.
16657
16658 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
16659
16660         * jit-icalls.c, mini.c: Added support for context static fields.
16661
16662 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16663
16664         * mini.c (mono_method_blittable): Methods which set LastError are not 
16665         blittable either. Fixes #51108.
16666         
16667 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16668
16669         * mini.c: flush icache.
16670         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
16671
16672 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16673
16674         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
16675
16676 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
16677
16678         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
16679         safe on IA32.
16680
16681         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
16682         vararg calls.
16683
16684         * inssel.brg (CEE_MKREFANY): Fix AOT case.
16685
16686 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
16687
16688         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
16689         instruction when the result is discarded.
16690
16691         * iltests.il (test_0_div_regalloc): New regression test.
16692
16693         * arrays.cs: Fix compilation error.
16694
16695 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
16696
16697         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
16698         float rules to inssel-x86.brg: sane architectures with FP registers
16699         don't need to implement these rules.
16700
16701 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16702
16703         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
16704
16705 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16706
16707         * mini.h, inssel-long32.brg: fixed endianess issues in int64
16708         implementation of 32 bit systems.
16709
16710 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16711
16712         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
16713         (Jeroen Zwartepoorte).
16714
16715 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
16716
16717         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
16718         the caller and the callee matches.
16719         
16720         * mini.c (mono_method_to_ir): Add comment.
16721
16722         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
16723         signbit is missing on some platforms.
16724
16725 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
16726
16727         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
16728
16729         * mini.c (setup_jit_tls_data): Call the new function.
16730         
16731         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
16732
16733         * mini-x86.c: Add experimental support for fast access to the lmf
16734         structure under NPTL/Linux 2.6.x.
16735
16736 2003-11-06  Martin Baulig  <martin@ximian.com>
16737
16738         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
16739         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
16740         the debugger.
16741
16742 2003-11-02  Martin Baulig  <martin@ximian.com>
16743
16744         * mini.c (inflate_generic_field): New static method.
16745         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
16746         generic instance and the field is declared in a generic type, call
16747         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
16748
16749 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
16750
16751         * mini.h mini.c (mono_method_same_domain): New function to return
16752         whenever the caller and the callee are in the same domain.
16753
16754         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
16755
16756 2003-10-30  Martin Baulig  <martin@ximian.com>
16757
16758         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
16759         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
16760         method parameters.
16761         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
16762         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
16763
16764 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
16765
16766         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
16767         propagation.
16768
16769         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
16770         object here, so it is in the correct appdomain etc.
16771
16772 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
16773
16774         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
16775         already done.
16776         (mono_method_to_ir): Avoid freeing the type created returned from
16777         mono_type_create_from_typespec, since it is put into an internal cache
16778         by the function. Fixes pointer.exe.
16779
16780         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
16781         trampolines for icalls and pinvokes as well. Fixes #33569.
16782
16783 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
16784
16785         * mini.c: Update after appdomain changes.
16786
16787         * mini.c (mono_jit_compile_method_inner): Allways compile native
16788         method wrappers in the root domain, since there can only be one
16789         instance of them, whose address is stored in method->info.
16790
16791 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
16792
16793         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
16794         environment variable. Instead detect automatically whenever running
16795         under valgrind using the magic macro RUNNING_ON_VALGRIND from
16796         valgrind.h.
16797
16798 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
16799
16800         * trace.c, trace.h: New files that implement the new trace option
16801         parsing. 
16802
16803         * driver.c: Document new --trace options.
16804
16805         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
16806         mini-x86.c: Apply:
16807
16808         -       if (mono_jit_trace_calls)
16809         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
16810
16811         * mini.h: prototypes.
16812         
16813 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
16814
16815         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
16816
16817         * mini.c inssel.brg: Implement typedefbyref opcodes.
16818
16819         * mini.c (mono_jit_compile_method): Remove unused local variable.
16820
16821         * mini.c (mono_jit_compile_method_inner): Ditto.
16822         
16823 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
16824
16825         * tramp-x86.c (x86_class_init_trampoline): Fix build.
16826         
16827         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
16828
16829 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
16830
16831         * mini.c (mono_no_aot): Remove unused global variable.
16832
16833         * mini.c: Thread safety fixes.
16834
16835 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
16836
16837         * mini.c (mono_create_class_init_trampoline): Add a lock around
16838         class_init_hash_addr.
16839
16840         * arrays.cs (test_0_newarr_emulation): Add new regression test for
16841         #30073.
16842
16843         * mini.c: Decompose the NEWARR instruction before decomposing its
16844         arguments. Fixes #30073.
16845
16846 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
16847
16848         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
16849         convention.
16850
16851 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
16852
16853         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
16854
16855         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
16856
16857         * driver.c: Add support for compiling icall wrappers to --compile.
16858
16859 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
16860
16861         * inssel.brg: The empty value in class->interface_offsets is -1, not
16862         0. Fixes #49287.
16863
16864 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
16865
16866         * objects.cs: New test for 'is' operator on an array of interfaces.
16867
16868 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
16869
16870         * tramp-ppc.c: update trampoline code to support jumps
16871         and class initialization.
16872
16873 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
16874
16875         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
16876
16877         * inssel.brg (OP_UNBOXCAST): Fix #46027.
16878
16879         * inssel.brg (OP_UNBOX): Remove unused rule.
16880
16881         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
16882         region instead of one for each method. Fixes #47813.
16883
16884 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
16885
16886         * exceptions.cs (test_0_nested_finally): New regression test for
16887         nested exception handlers.
16888
16889         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
16890
16891         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
16892
16893         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
16894         inlining.
16895
16896         * mini.c (mono_method_check_inlining): Make the inlining limit 
16897         configurable by an environment variable.
16898         
16899         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
16900
16901         * mini.h: Bump AOT file version.
16902
16903         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
16904         token, store the image along with the token, since the token might not 
16905         refer to the same image as the method containing the relocation, 
16906         because of inlining.
16907
16908 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
16909
16910         * mini.c (mono_precompile_assemblies): New function to compile
16911         all methods in all loaded assemblies.
16912
16913         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
16914
16915         * regalloc.h regalloc.c (MonoRegState): Change the type of 
16916         iassign and fassign to int*, since they can contain large negative
16917         values if the register is spilled. Also added some comments. Fixes
16918         #45817.
16919
16920         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
16921         under Win32. Fixes #42964.
16922
16923 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
16924
16925         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
16926
16927         * aot.c: Added support for AOT compiling methods which contain calls
16928         to wrappers. Currently, only remoting-invoke-with-check wrappers are
16929         handled.
16930         
16931         * driver.c (compile_all_methods): Run the compilation in a thread
16932         managed by mono. Fixes #44023.
16933
16934         * mini.c (mono_codegen): Print full method name in verbose output.
16935
16936         * mini-x86.c (mono_arch_patch_code): Fix warning.
16937         
16938         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
16939         jumps, since the method we are jumping to might be domain-specific.
16940
16941         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
16942
16943 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
16944
16945         * inssel.brg: string chars are unsigned.
16946
16947 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
16948
16949         * TODO: New todo item.
16950
16951         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
16952         which calls mono_runtime_class_init and patches the call site to
16953         avoid further calls.
16954         (mono_arch_create_class_init_trampoline): New arch specific function 
16955         to create a class init trampoline.
16956         (create_trampoline_code): Generalized so it can create
16957         class init trampolines as well.
16958
16959         * mini.c (helper_sig_class_init_trampoline): New helper variable.
16960         (mono_create_class_init_trampoline): New function to create and cache
16961         class init trampolines.
16962         (mono_find_class_init_trampoline_by_addr): New function to lookup the
16963         vtable given the address of a class init trampoline. Used by the
16964         patching process.
16965         (mono_codegen): Generate a call to a trampoline instead of
16966         mono_runtime_class_init in LDSFLD[A].
16967         (mono_codegen): Add relocations for the new trampoline.
16968         
16969         * mini.h mini-x86.c aot.c: Added a new relocation type: 
16970         MONO_PATCH_INFO_CLASS_INIT.
16971
16972         * mini.h: Bump AOT version number.
16973
16974         * aot.c: Create a copy of the loaded code instead of using the original
16975         so methods which call each other will be close in memory, improving
16976         cache behaviour.
16977         
16978         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
16979         patch since it breaks the regression tests.
16980         
16981         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
16982         for the register saving instruction sequence since the 
16983         frame_state_for function in glibc 2.3.2 don't seem to detect it.
16984
16985 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
16986
16987         * TODO: Fix todo item && remove another.
16988
16989 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
16990
16991         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
16992         previous checkin.
16993
16994         * aot.c: Moved the check for MONO_LASTAOT into the initialization
16995         function of the module.
16996
16997         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
16998         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
16999         --no-aot command line option.
17000
17001 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
17002
17003         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
17004         by Bernie Solomon (bernard@ugsolutions.com).
17005
17006         * inssel.brg: Refactor the interface offset table related code into
17007         its separate functions and add support for the AOT case.
17008
17009 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
17010
17011         * aot.c (mono_aot_get_method_inner): Fix memory leak.
17012         
17013         * aot.c: Added mono_aot_verbose variable and made all debugging
17014         output depend on the value of this variable.
17015
17016         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
17017         method_label and info_label.
17018
17019         * mini.h mini-x86.c aot.c: Added a new relocation type 
17020         MONO_PATCH_INFO_IID for klass->interface_id.
17021
17022         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
17023         the MonoJitInfo structure.
17024
17025         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
17026         a non-root appdomain in shared mode.
17027
17028 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17029
17030         * aot.c: make aot loader less verbose. Remove free of unused variable.
17031
17032 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
17033
17034         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
17035
17036         * .cvsignore: Added *.dll.
17037
17038         * mini.c (mono_print_tree_nl): New function callable while debugging.
17039
17040         * mini.c (mono_print_code): Export this.
17041
17042         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
17043         patched code.
17044
17045 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
17046
17047         * mini.h (MonoCompile): Added 'jit_info' field.
17048
17049         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
17050         the cfg structure, since it is needed by the AOT compiler.
17051
17052         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
17053
17054         * aot.c: A major rewrite. Changes include:
17055         - save exception tables for methods which have them.
17056         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
17057         to g_module_symbol.
17058         - reworked the file format so it is now much smaller and needs
17059         fewer relocation entries.
17060         
17061 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
17062
17063         * aot.c (load_aot_module): Fix build bustage on platforms without
17064         Boehm GC.
17065
17066 2003-09-04  Martin Baulig  <martin@ximian.com>
17067
17068         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
17069
17070 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
17071
17072         * TODO: Some new optimization ideas.
17073
17074         * aot.c: Move AOT module loading logic here from mono_assembly_open.
17075
17076         * aot.c: Save the optimization flags used to compile the code into
17077         the AOT module.
17078
17079         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
17080         support emitting domain specific code.
17081         
17082         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
17083         no longer domain neutral. It can be made domain neutral by compiling 
17084         with --optimize=shared.
17085
17086         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
17087         between appdomains.
17088
17089         * driver.c mini.h mini.c: New --no-aot debugging option which disables
17090         loading of AOT code.
17091
17092         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
17093         
17094         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
17095         if there is no domain neutrality information.
17096
17097 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
17098
17099         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
17100         format version into the generated library.
17101
17102         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
17103         callee method into the caller since one of them could be shared.
17104
17105         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
17106         system exceptions from AOT code now works.
17107
17108         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
17109         method if it is domain neutral and the callee is not.
17110
17111         * graph.c (cfg_emit_one_loop_level): Fix warning.
17112
17113 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
17114
17115         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
17116         last checkin.
17117
17118 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
17119
17120         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
17121         is needed  by code which is executed before mono_runtime_init ().
17122         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
17123         
17124         * mini.c (mono_thread_abort): Fix warning.
17125         (mono_jit_compile_method): Call static constructor in the AOT case too.
17126
17127         * aot.c (mono_compile_assembly): Fix warning.
17128
17129 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17130
17131         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
17132
17133 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
17134
17135         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
17136
17137         * cpu-pentium.md: Fix the length of call opcodes so they include the
17138         ESP restoring instruction. Fixes #47968.
17139
17140 2003-08-28  Martin Baulig  <martin@ximian.com>
17141
17142         * mini-x86.c (mono_arch_call_opcode): Added support for
17143         MONO_TYPE_GENERICINST.
17144
17145         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
17146
17147 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
17148
17149         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
17150         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
17151
17152         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
17153         metadata_section.
17154
17155 2003-08-26  Martin Baulig  <martin@ximian.com>
17156
17157         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
17158         when reporting an error, set this to the actual error location.
17159         (mono_method_to_ir): Report the correct error location if
17160         get_basic_blocks() returned an error.
17161
17162 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
17163
17164         * mini.c (mono_type_blittable): OBJECT is not blittable.
17165         (mono_method_blittable): Methods which have marshalling descriptors
17166         are not blittable either. Fixes #47842.
17167
17168 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
17169
17170         * driver.c mini.c: Use an environment variable instead of a global 
17171         variable. Also fix the build.
17172
17173         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
17174         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
17175         reporting this. 
17176
17177         * driver.c mini.c: Added --with-valgrind option to turn off some
17178         code which prevents mono from running under valgrind.
17179
17180         * mini.c (mono_emit_call_args): Fixed warning.
17181
17182         * mini.c (mono_emulate_opcode): Fixed warning.
17183
17184 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17185
17186         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
17187         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
17188         regalloc.c, regalloc.h: specify available registers in arch-specific
17189         code and support floats in the regallocator (patch by Laurent Morichetti 
17190         <l_m@pacbell.net>)
17191
17192 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17193
17194         * mini.c: mono_thread_current() can be called only after
17195         mono_runtime_init(): rearrange code to not call it early on.
17196
17197 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17198
17199         * mini.c: allocate jump tables in the code mempools.
17200
17201 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17202
17203         * mini.c, mini.h: make sure per-thread data allocated by the jit is
17204         freed.
17205
17206 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
17207
17208         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
17209         12 to 16.  This fixes bug #47453.
17210
17211
17212 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
17213
17214         * mini-ppc.c: fixed indexed load and unsigned compares.
17215
17216 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
17217
17218         * mini.c: reenabled installation of handler for
17219           thread abort signal.
17220
17221 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17222
17223         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
17224         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
17225         until it's fixed and actually useful.
17226
17227 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17228
17229         * inssel-long32.brg: couple more opcodes implemented.
17230
17231 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
17232         
17233         * mini-sparc.c: Even more opcodes implemeted.
17234
17235 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
17236
17237         * mini-sparc.c: More opcodes implemented.
17238
17239 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
17240
17241         * mini-sparc.c: More opcodes implemented.
17242
17243 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
17244
17245         * inssel-sparc.brg: Add some needed rules.  Direct
17246         copy from PPC.
17247         * Makefile.am: Use inssel-sparc.brg
17248         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
17249         an assert happy for now.
17250
17251 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
17252
17253         * mini-sparc.c: Fixed compile errors.
17254         * exceptions-sparc.c: Same.  We now produce a mono binary 
17255         on sparc-linux.  Yea.
17256
17257 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
17258
17259         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
17260         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
17261         They compile, but do not work.
17262
17263 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17264
17265         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
17266         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
17267         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
17268         (ct@gentoo.org).
17269
17270 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17271
17272         * mini.c: more opcodes implemented and better support for generics.
17273
17274 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17275
17276         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
17277         * mini.c, mini.h: first cut at generics support: some new instructions 
17278         added and changed the behaviour of some of the existing ones.
17279
17280 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
17281
17282         * mini.c: Removed definition of metadata_shared mutex here.
17283
17284 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17285
17286         * mini-x86.c: make vararg calls work for instance methods.
17287
17288 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
17289
17290         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
17291         returns the arguments in a separte list, now.
17292
17293 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17294
17295         * aot.c, mini.c: updates for array type representation changes.
17296
17297 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
17298
17299         * mini.c: register function to perform jit shutdown.
17300
17301 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17302
17303         * mini.c: use a faster allocator if possible.
17304
17305 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17306
17307         * aot.c: some cleanups and portability changes.
17308
17309 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17310
17311         * mini.c: use faster allocation for CEE_BOX if possible.
17312
17313 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17314
17315         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
17316         Moved inlined mempcy code to its own function so that is can be
17317         reused. Added an inline memset function as well (optimized initobj).
17318         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
17319
17320 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17321
17322         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
17323
17324 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
17325
17326         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
17327         arch code can setup the cpu for CLR execution, if needed.
17328         We use it on x86 to set the precision of FP operations.
17329
17330 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
17331
17332         * mini.c: disable some optimizations if we can guess they'll cost too
17333         much for a given method.
17334
17335 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17336
17337         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
17338         
17339 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17340         * mini.h mini.c mini-x86.c: Added instruction level coverage 
17341         info collection support.
17342
17343 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17344
17345         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
17346         is now implemented in the profiling API. Get rid of a couple of
17347         unnecessary global variables.
17348
17349 2003-06-15  Nick Drochak <ndrochak@gol.com>
17350
17351         * basic-long.cs: tests for negative values for bigmul, and unsigned.
17352         * cpu-g4.md: add op_bigmul and op_bigmul_un
17353         * cpu_pentium.md: add op_bigmul_un
17354         * inssel-long32.brg: add rule for unsigned bigmul
17355         * mini-ops.h: define OP_BIGMUL_UN
17356         * mini-x86.c: THE BUG: handle (un)signed properly
17357         * mini.c: choose unsigned opcode if needed.
17358         This set of patches fixes bug #44291
17359
17360 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
17361
17362         * mini.c (optimize_branches): improved to handle all kinds of
17363         conditional branches.
17364
17365 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17366
17367         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
17368         don't raise exceptions.
17369
17370 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17371
17372         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
17373         to arch-specific files.
17374
17375 2003-06-09  Martin Baulig  <martin@ximian.com>
17376
17377         * Makefile.am (libs): Added $(LIBGC_LIBS).
17378
17379 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
17380
17381         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
17382         and OP_ATAN (fixes bug#44293).
17383
17384 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
17385
17386         * Makefile.am, mini-x86.c: rename cpu description array to
17387         pentium_desc, since some compilers define the 'pentium' preprocessor
17388         symbol.
17389
17390 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
17391
17392         * mini.c (mini_select_instructions): add explicit branch if the
17393         following block is not the false target of a conditional branch -
17394         we need this with any optimization that reorder or remove bblocks
17395
17396         * mini.c (optimize_branches): bug fixes
17397
17398 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
17399
17400         * mini.c (mono_method_to_ir): inline static readonly fields
17401
17402         * ssa.c (fold_tree): start cfold support for long (very simple
17403         cases only)
17404
17405         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
17406
17407 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17408
17409         * inssel.brg: fixed memcpy (bug #44219).
17410
17411 2003-06-05  Dick Porter  <dick@ximian.com>
17412
17413         * driver.c: Set the glib log levels to not abort if g_message
17414         recurses.
17415
17416         g_set_prgname() has to happen before mini_init() so that the
17417         process handle gets the info.
17418         
17419 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17420
17421         * driver.c: add intrins to the default optimizations to get wider
17422         exposure.
17423
17424 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17425
17426         * mini.h: some large basic blocks will overflow a 16-bit
17427         integers for symbolic registers.
17428
17429 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17430
17431         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
17432         (mono_arch_output_basic_block): fix bug 43499 
17433
17434 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17435
17436         * mini.c: kill duplicated definition of mono_debug_format.
17437
17438 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
17439
17440         * mini-x86.c, arrays.cs: fixed register allocation bug.
17441
17442 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17443
17444         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
17445
17446         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
17447
17448 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17449
17450         * mini.c:
17451         (print_method_from_ip): also print source location information if
17452         available.
17453
17454 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
17455
17456         * mini.c (mono_find_block_region): bug fix in region code
17457         (mini_method_compile): enable removing unreachable code again, but
17458         only in methods without exception clauses.
17459
17460 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17461
17462         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
17463         Implemented arglist opcode and handling of TypedReference type.
17464         Fixed x86 call convention when a structure is returned.
17465         Minimal support for calling static vararg methods.
17466
17467 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
17468
17469         * mini.c (mini_method_compile):  always remove unreachable code,
17470         because the code in them may be inconsistent  (access to dead
17471         variables for example).
17472
17473 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17474
17475         * driver.c, debug-mini.c: warning fixes.
17476
17477 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
17478
17479         * Makefile.am, jit.h, mini.h: install header for embedding mono.
17480
17481 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
17482
17483         * mini.c: thread-static fields are registered in mono_class_vtable(),
17484         so ensure the function is called before checking for them.
17485
17486 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
17487
17488         * mini.c (optimize_branches): fix for bug 43586
17489
17490         * jit-icalls.c (mono_llmult_ovf): added an additional check for
17491         overflow (fixes Bug #43639)
17492
17493 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17494
17495         * mini.c, objects.cs: allow the use of stobj for primitive types.
17496
17497 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17498
17499         * mini.c: be less strict about argument checking until we support
17500         running the verifier.
17501
17502 2003-05-27  Nick Drochak <ndrochak@gol.com>
17503
17504         * basic-long.cs: tests for (ulong)int * (ulong)int also
17505         * mini.c: use the same trick for (ulong)int * (ulong)int
17506
17507 2003-05-27  Nick Drochak <ndrochak@gol.com>
17508
17509         * basic-long.cs: add regression test for (long)int * (long)int
17510         * cpu-pentium.md: add op_bigmul specification
17511         * inssel-long32.brg: add OP_BIGMUL rule
17512         * mini-ops.h: add OP_BIGMUL
17513         * mini-x86.c: register allocator: handle case where src1 needs to be
17514         in EAX.
17515         * mini.c: substitute special BIGMUL opcode in the tree for 
17516         (long)int * (long)int
17517
17518 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
17519
17520         * jit-icalls.c: call the type ctor on field access if needed.
17521
17522 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17523
17524         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
17525         to a method (including results of ldelema, bug#43207).
17526
17527 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
17528
17529         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
17530         colors to show exception handler blocks.
17531
17532         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
17533         (fix for pinvoke7.cs).
17534
17535 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17536
17537         * mini.h, mini.c: ensure correct initialization order for types that
17538         require it. Prepare for lazy compilation of jit icall wrappers.
17539         Provide a name for opcode emulation to reduce unneeded mallocing.
17540
17541 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
17542
17543         * mini-x86.c: better register restoring code and profiling
17544         support for tail calls.
17545
17546 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17547
17548         * mini.h, driver.c: prepare for leaf methods optimization.
17549
17550 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17551
17552         * mini.c: get targets of branches before converting a method.
17553
17554 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
17555
17556         * mini.c (optimize_branches): added some experimental code (disbaled) 
17557
17558 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
17559
17560         * mini.c (optimize_branches): fix branch to branch optimization 
17561
17562         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
17563
17564         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
17565
17566         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
17567
17568         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
17569         if needed.
17570
17571 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
17572
17573         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
17574         enable use of interface variables again.
17575
17576         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
17577         I1 to registers because there is no simply way to sign extend 8bit
17578         quantities in caller saved registers on x86.
17579
17580         * inssel-float.brg: set costs of some rules to 2 so
17581         that monobure always select the arch. specific ones if supplied,
17582         regardless of the order we pass the files to monoburg.
17583
17584 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17585
17586         * mini.c, mini-x86.c: since the magic trampoline for jumps
17587         can't patch the code directly, we do it as soon as the
17588         method gets compiled.
17589
17590 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17591
17592         * mini-x86.c, mini.h: introduce a new patching method
17593         to support CEE_JMP and tail calls.
17594         * mini.c: obey tail.call. Don't precompile methods target
17595         of CEE_JMP.
17596         * tramp-x86.c: new trampoline code to handle methods
17597         reached through a jump.
17598
17599 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
17600
17601         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
17602         bit values to registers
17603
17604 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
17605
17606         * mini.c (mono_compile_get_interface_var): share interface
17607         variables if possible.
17608
17609 2003-05-16  Martin Baulig  <martin@ximian.com>
17610
17611         * debug-mini.c (mono_init_debugger): New function to initialize
17612         the debugger.  This is not in the debugger since it needs to
17613         access some of mini's internals.
17614
17615 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17616
17617         * mini.c (mono_method_to_ir): inlining fixes/cleanups
17618
17619 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
17620
17621         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
17622         for value type handling.
17623
17624 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17625
17626         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
17627         (mono_method_check_inlining): enable inlining of all kinds of wrappers
17628
17629 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
17630
17631         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
17632           the constructor through a proxy.
17633
17634 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17635
17636         * jit-icalls.c, inssel.brg: fixes to array element address
17637         calculations.
17638
17639 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
17640
17641         * mini-x86.c (is_regsize_var): allocate pointer to registers
17642
17643 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17644
17645         * driver.c: fixed typo, added intrins to the set of optimizations
17646         tested with regressions.
17647
17648 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
17649
17650         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
17651         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
17652         test case.
17653
17654 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
17655
17656         * inssel.brg: remove some common pop instructions without side effects
17657
17658 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17659
17660         * inssel-x86.brg: fixed thinko in int to double conversions.
17661
17662 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
17663
17664         * mini.c, jit-icalls.c: added runtime thread-static variable support.
17665
17666 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17667
17668         * inssel-long32.brg: two more missing instructions.
17669
17670 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
17671
17672         * mini.c (mono_emit_call_args): set the cil_code for all arguments
17673         if not already set.
17674
17675 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
17676
17677         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
17678         correctly.
17679
17680         * basic-float.cs: Added tests for negative zero.
17681
17682 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17683
17684         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
17685         a couple of missing operations for long casts, with test cases.
17686
17687 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17688
17689         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
17690
17691 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
17692
17693         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
17694         code size estimation.
17695
17696 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
17697
17698         * mini.c (mono_jit_create_remoting_trampoline): make it work with
17699         abstract methods (fix bug 42542)
17700
17701         * aot.c: add ability to handle array types
17702         
17703 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
17704
17705         * mini.c: Call the _specific versions of the object allocation
17706         functions if possible.
17707
17708 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17709
17710         * driver.c: call setlocale ().
17711
17712 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17713
17714         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
17715         windows build.
17716
17717 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
17718
17719         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
17720
17721         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
17722         wrappers (fix bug 42122)
17723
17724 2003-05-04  Martin Baulig  <martin@ximian.com>
17725
17726         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
17727
17728         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
17729         s/mini_set_defaults/mono_set_defaults/g.
17730
17731 2003-05-04  Martin Baulig  <martin@ximian.com>
17732
17733         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
17734
17735 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17736
17737         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
17738         (reported by Don Roberts).
17739
17740 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17741
17742         * mini.c: temporarily work around two bugs for this release.
17743
17744 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17745
17746         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
17747         that contains -export-dynamic and it makes using the ld script
17748         useless.
17749         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
17750
17751 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17752
17753         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
17754         specific cpu.
17755
17756 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17757
17758         * mini.c: make sure leave calls all the needed finally blocks,
17759         even when the target jumps out of multiple exception clauses.
17760
17761 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17762
17763         * ldscript, Makefile.am: add linker script to reduce the number of
17764         exported symbols (should also fix the issues with libwine defining
17765         some of the same symbols in io-layer).
17766
17767 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
17768
17769         * driver.c (mini_main): Avoid assertion when no file name is given on 
17770         the command line.
17771
17772 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
17773
17774         * driver.c: added --version/-V command line option.
17775         Added the inline optimization in the regression tests.
17776
17777 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17778
17779         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
17780         to the type in the method signature (fixes bug#42134).
17781
17782 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
17783
17784         * mini.c: when inlining, check this is not null only when needed (bug #42135).
17785
17786 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
17787
17788         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
17789
17790 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17791
17792         * driver.c: fixed bug #42100.
17793
17794 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
17795
17796         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
17797
17798 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17799
17800         * mini.c: moved most of the code required to do inlining to its own
17801         function so it can be reused. Inline also ctors if appropriate.
17802
17803 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
17804
17805         * Makefile.am: Link with -export-dynamic so shared libs loaded by
17806         the runtime can call mono API functions.
17807
17808 2003-04-27  Martin Baulig  <martin@ximian.com>
17809
17810         * debug-mini.c (mono_debug_init_method): Added
17811         `guint32 breakpoint_id' argument; if the method has a breakpoint,
17812         send a notification to the debugger.
17813
17814         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
17815         running in the Mono Debugger, just pass the breakpoint number to
17816         mono_debug_init_method().
17817
17818         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
17819
17820 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
17821
17822         * mini.c: allow some more unsafe compares.
17823
17824 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17825
17826         * mini-x86.c, Makefile.am: make distcheck works (partially from
17827         a patch by Richard Lee <r.h.lee@attbi.com>).
17828         * regset.c, regset.h: removed, they are unused.
17829
17830 2003-04-25  Dick Porter  <dick@ximian.com>
17831
17832         * driver.c: Usage reports the name as 'mono' not 'mini'
17833         * exceptions-x86.c: Build and run on freebsd
17834
17835 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
17836
17837         * Makefile.am: install the program with the 'mono' name and
17838         the library as libmono instead of mini and libmini.
17839
17840 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17841
17842         * driver.c: provide the APIs for the embedding interface of the old jit.
17843
17844 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
17845
17846         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
17847
17848 2003-04-23  Martin Baulig  <martin@ximian.com>
17849
17850         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
17851
17852         * driver.c: Added `--debug' command line argument to enable
17853         debugging support.
17854
17855 2003-04-23  Martin Baulig  <martin@ximian.com>
17856
17857         * debug.[ch]: Removed.  The code is now in
17858         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
17859
17860         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
17861         last six months.
17862
17863 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
17864
17865         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
17866
17867 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17868
17869         * mini.c:
17870         (mini_cleanup): moved mono_runtime_cleanup call after the call to
17871         mono_domain_finalize.
17872         (mini_method_compile): use mono_method_profile* if the the option is
17873         enabled.
17874
17875 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
17876
17877         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17878         methods with their wrapper.
17879
17880         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17881         methods with their wrapper.
17882
17883         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
17884         their wrapper.
17885
17886         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
17887         wrapper.
17888
17889         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
17890         methods.
17891
17892 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
17893
17894         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
17895
17896 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
17897
17898         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
17899         of the mempool. This is slightly faster and uses less memory
17900
17901 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17902
17903         * mini.c: avoid O(n) allocation for variables.
17904
17905 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17906
17907         * mini.c: handle items on the stack after inlining methods.
17908
17909 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17910
17911         * mini.c: make the method->opcode optimization dependent
17912         on MONO_OPT_INSTRINS and do it lazily.
17913
17914 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17915
17916         * driver.c: print overall results at the end of regression run.
17917
17918 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
17919
17920         * inssel.brg: don't overwrite symbolic registers.
17921
17922 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17923
17924         * inssel-x86.brg: fix conversion from long to float.
17925
17926 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
17927
17928         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
17929
17930 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
17931
17932         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
17933
17934         * driver.c: Added --print-vtable option as in the old JIT.
17935
17936 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17937
17938         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
17939
17940 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
17941
17942         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
17943
17944 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
17945
17946         * mini.c regalloc.c regalloc.h: Fix memory leak.
17947
17948 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
17949
17950         * aot.c (mono_aot_get_method): register all used strings
17951
17952 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17953
17954         * mini.c: always intern strings references with ldstr at compile time.
17955
17956 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17957
17958         * Makefile.am: add BUILT_SOURCES.
17959
17960 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17961
17962         * driver.c: give a better error message when the assembly to execute
17963         doesn't have an entry point.
17964
17965 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
17966
17967         * Makefile.am: added hack for automake
17968
17969         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
17970         correct sematics.
17971
17972         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
17973
17974 22003-04-07  Martin Baulig  <martin@ximian.com>
17975
17976         * Makefile.am: Added Makefile.am.
17977
17978         * debugger-main.c: Removed, this is now in the debugger where it
17979         belongs.
17980
17981         * mini.pc.in: Call this package `mini' for the moment.
17982
17983
17984
17985
17986
17987
17988
17989
17990
17991
17992
17993
17994
17995