f2ea7509e7c35054a84974063dab693197d47ded
[mono.git] / mono / mini / ChangeLog
1 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2
3         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
4
5         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
6         call.
7
8         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
9         a bit to also restore %rax.
10
11 2008-12-05  Mark Probst  <mark.probst@gmail.com>
12
13         * mini-ppc.c: Some simple merges from mini-ppc64.c.
14
15 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
16
17         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
18         arguments.
19
20 2008-12-05  Mark Probst  <mark.probst@gmail.com>
21
22         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
23
24         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
25         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
26
27         * exceptions-ppc64.c: Removed.
28
29         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
30
31 2008-12-05  Mark Probst  <mark.probst@gmail.com>
32
33         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
34         tramp-ppc64.c.
35
36         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
37
38         * tramp-ppc64.c: Removed.
39
40 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
41
42         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
43         the TYPESPEC table.
44
45 2008-12-05  Mark Probst  <mark.probst@gmail.com>
46
47         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
48
49         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
50         mini-ppc.h instead of mini-ppc64.h.
51
52         * mini-ppc64.h: Removed.
53
54 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
55
56         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
57         
58         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
59         
60 2008-12-05  Mark Probst  <mark.probst@gmail.com>
61
62         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
63         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
64         code easier.
65
66 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
67
68         * basic-simd.cs: Tests for operator == and != on Vector4f.
69
70 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
71
72         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
73
74         * simd-intrinsics.c: Kill useless enum.
75
76 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
77
78         * cpu-mips.md: add long_conv_to_ovf_i4_2
79         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
80
81 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
82
83         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
84         
85         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
86
87 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
88
89         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
90         
91 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
92
93         * basic-simd.cs: Add tests for new methods.
94
95 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
96
97         * simd-intrinsics.c: Add support for operator == and !=
98         on Vector4(u)i.
99
100         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
101
102 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
103
104         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
105
106 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
107
108         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
109
110         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
111         MONO_PATCH_INFO_ICALL_ADDR.
112
113         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
114
115         * aot-compiler.c: Resurrect full-aot support.
116
117 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
118
119         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
120         
121 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
122
123         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
124         
125 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
126
127         * basic-simd.cs: Fix tests to work under ppc.
128         Remove tests for methods that will be removed.
129
130 2008-12-03  Mark Probst  <mark.probst@gmail.com>
131
132         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
133         generic type (via a typedef or typeref) correctly.
134
135 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
136
137         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
138         diagnose an assertion failure.
139
140 2008-12-02  Mark Probst  <mark.probst@gmail.com>
141
142         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
143         Fix trampoline size.
144
145         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
146         conversion opcodes are implemented natively instead via emulation.
147
148 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
149
150         * cpu-mips.md: remove mips_xori
151
152         * mini-ops.h:  remove mips_xori
153
154         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
155
156         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
157         
158         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
159         
160 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
161
162         * cpu-mips.md: fix instruction lengths.
163
164         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
165
166         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
167
168         * mini-ops.h: fix slti / sltiu op profiles.
169         
170 2008-12-02  Martin Baulig  <martin@ximian.com>
171
172         * method-to-ir.c (mono_method_to_ir): Disable debugging
173         information for the init locals block to make the debugger stop
174         after all locals have been initalized.
175
176 2008-12-02  Martin Baulig  <martin@ximian.com>
177
178         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
179         running inside the debugger.
180
181 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
182
183         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
184         is enabled.
185
186         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
187         alu->alu imm optimization which only shows if deadce is disabled.
188
189         * aot-compiler.c: Rename the function names for the binary and asm writers
190         so they can coexist in the same process. Rework the xdebug code to use the
191         asm writer. This avoids the need to call into the runtime to dump the
192         debugging info. Add more debugging info for types.
193
194         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
195
196         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
197         cpu description tables, they can't occur in cpu-<ARCH>.md.
198
199         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
200         the stack in CEE_LDFLDA. Fixes #450542.
201
202         * generics.cs: Add a new test.
203
204 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
205
206         * mini-ops.h: updated MIPS opcodes
207         * mini-mips.c: decompose long opts
208         * mini-mips.h: decompose long opts
209         
210 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
211
212         * cpu-mips.md: fix length on int_rem_un
213         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
214         
215 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
216
217         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
218
219         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
220
221 2008-11-29  Martin Baulig  <martin@ximian.com>
222
223         * mini-exceptions.c (mono_handle_native_sigsegv): Check
224         mono_debug_using_mono_debugger() in addition to the
225         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
226
227 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
228
229         * mini-ops.h: updated more MIPS opcodes
230         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
231         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
232         
233 2008-11-28  Mark Probst  <mark.probst@gmail.com>
234
235         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
236
237 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
238
239         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
240         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
241         * mini-ops.h: correct selected mips opcode entries
242         
243 2008-11-28  Mark Probst  <mark.probst@gmail.com>
244
245         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
246         make them work.
247
248 2008-11-28  Mark Probst  <mark.probst@gmail.com>
249
250         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
251
252 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
253
254         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
255         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
256         * mini-mips.h: disable IMT
257         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
258         
259 2008-11-28  Mark Probst  <mark.probst@gmail.com>
260
261         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
262
263 2008-11-28  Mark Probst  <mark.probst@gmail.com>
264
265         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
266
267 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
268
269         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
270         consistency.
271
272 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
273
274         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
275         for Set/GetVector aligned versions.
276
277 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
278
279         * basic-simd.cs: Add tests for Get/SetVector.
280
281 2008-11-27  Mark Probst  <mark.probst@gmail.com>
282
283         * mini.c: Removed g_slist_append_mempool().  Now in
284         metadata/mempool.c.
285
286 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
287
288         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
289         size properly and make the bounds check optional.
290
291         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
292         for SetVector and IsAligned.
293
294 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
295
296         * mini.c: Remove unused mono_normalize_opcodes () function.
297
298 2008-11-26  Mark Probst  <mark.probst@gmail.com>
299
300         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
301         using the new atomic add ops now.
302
303         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
304         add.
305
306 2008-11-26  Mark Probst  <mark.probst@gmail.com>
307
308         * mini-ppc64.c: Several fixes.
309
310 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
311
312         * cpu-mips.md: added jump_table
313         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
314
315 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
316
317         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
318
319 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
320
321         * mini-ops.h: corrected a handful of MIPS opcodes.
322
323 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
324
325         * aot-compiler.c: MIPS to use ELF writer
326
327 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
328
329         * mini-codegen.c: remove MIPS specific assert.
330
331 2008-11-25  Mark Probst  <mark.probst@gmail.com>
332
333         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
334         fixes.  PPC64 now passes most of the runtime regressions.
335
336 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
337
338         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
339         volatile intervals a bit.
340
341 2008-11-24  Mark Probst  <mark.probst@gmail.com>
342
343         * basic-long.cs: New test case.
344
345 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
346
347         * mini.c (mini_method_compile): Disable globalra for large methods for 
348         now.
349
350         * regalloc2.c (order_moves): Add fp support.
351
352         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
353         source bblock ends with an OP_BR_REG.
354
355         * ratests.cs: Add a new test.
356
357 2008-11-23  Mark Probst  <mark.probst@gmail.com>
358
359         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
360         sharing.  PPC64 now passes generics.exe.
361
362 2008-11-23  Mark Probst  <mark.probst@gmail.com>
363
364         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
365
366 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
367
368         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
369         memory when mono_jit_info_table_find () can't find the method in the
370         LMF case.
371
372         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
373         AOTed code too.
374         
375         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
376         writer too.
377
378 2008-11-23  Mark Probst  <mark.probst@gmail.com>
379
380         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
381         Several fixes.  PPC64 now runs exceptions.exe and
382         devirtualization.exe.
383
384 2008-11-22  Mark Probst  <mark.probst@gmail.com>
385
386         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
387         arrays.exe and basic-math.exe.
388
389 2008-11-22  Mark Probst  <mark.probst@gmail.com>
390
391         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
392         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
393
394 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
395
396         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
397
398 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
399
400         * method-to-ir.c: Move bounds checking macros to ir-emit.h
401
402         * ir-emit.h: Move macros from method-to-ir.c to here.
403
404 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
405
406         * mini-ops.h: Correct the long simd ops to use LREG.
407
408 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
409
410         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
411         
412         * mini-ops.h: Correct the dreg type of a few long opcodes.
413
414         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
415         Add netbsd support.
416
417 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
418
419         * mini-ppc.c: remove negative stack references in epilog
420         for platforms that don't support the red zone.
421
422 2008-11-21  Mark Probst  <mark.probst@gmail.com>
423
424         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
425         point regs.  Now PPC64 passes basic-calls.exe.
426
427 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
428
429         * basic-simd.cs: Add tests for accessors of Vector2l.
430
431 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
432
433         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
434
435         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
436         
437         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
438
439 2008-11-21  Mark Probst  <mark.probst@gmail.com>
440
441         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
442         PPC64 passes basic-long.exe.
443
444 2008-11-20  Mark Probst  <mark.probst@gmail.com>
445
446         * decompose.c: Decompose carry and overflow add on PPC64 like on
447         other 64 bit archs.  Don't decompose sub at all on PPC64.
448
449         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
450         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
451         basic-long.exe.
452
453 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
454
455         * basic-simd.cs: Add tests for accessors of Vector2d.
456
457 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
458
459         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
460
461         * cpu-x86.md: Same.
462
463         * mini-x86.c (mono_arch_output_basic_block): Same.
464         
465         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
466
467 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
468
469         * basic-simd.cs: Add tests for accessors of Vector4f.
470
471 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
472
473         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
474
475         * cpu-x86.md: Same.
476
477         * mini-x86.c (mono_arch_output_basic_block): Same.
478         
479         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
480
481 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
482
483         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
484
485 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
486
487         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
488
489         * cpu-x86.md: Same.
490
491         * mini-x86.c (mono_arch_output_basic_block): Same.
492         
493         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
494
495 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
496
497         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
498
499 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
500
501         * simd-intrinsics.c: Enable setters for Vector16sb.
502
503 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
504
505         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
506
507         * cpu-x86.md: Same.
508
509         * mini-x86.c (mono_arch_output_basic_block): Same.
510         
511         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
512
513 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
514
515         * simd-intrinsics.c: Implement setter for Vector8us.
516
517 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
518
519         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
520         for dead variables.
521
522 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
523
524         * mini-ppc.c: remove references to the red zone in the prolog
525         (for systems that don't support it).
526
527 2008-11-19  Mark Probst  <mark.probst@gmail.com>
528
529         * cpu-ppc64.md: Fixed a few instruction lengths.
530
531         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
532         now.
533
534 2008-11-19  Mark Probst  <mark.probst@gmail.com>
535
536         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
537         basic.exe now.
538
539 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
540
541         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
542
543 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
544
545         * mini-ops.h: Added OP_INSERT_I2.
546
547         * cpu-x86.md: Same.
548
549         * mini-x86.c (mono_arch_output_basic_block): Same.
550         
551         * simd-intrinsics.c: Implement setter for Vector8s.
552
553         * simd-methods.h: Add the names of get setters of Vector8s.
554
555 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
556
557         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
558         
559         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
560         parameters.
561
562         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
563
564 2008-11-18  Mark Probst  <mark.probst@gmail.com>
565
566         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
567         for PPC64.  An empty program runs now.
568
569 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
570
571         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
572
573         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
574         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
575         info for JITted code is emitted into a shared library, loadable into gdb.
576
577 2008-11-18  Mark Probst  <mark.probst@gmail.com>
578
579         * Makefile.am: Changes to build PPC64.
580
581         * mini-arch.h: Include mini-ppc64.h on PPC64.
582
583 2008-11-18  Mark Probst  <mark.probst@gmail.com>
584
585         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
586         in PPC code up to r119147.
587
588 2008-11-18  Mark Probst  <mark.probst@gmail.com>
589
590         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
591         cpu-ppc64.md: Changes for PPC64.
592
593         Based on code submitted by andreas.faerber@web.de at
594         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
595         X11/MIT license.
596
597 2008-11-18  Mark Probst  <mark.probst@gmail.com>
598
599         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
600         cpu-ppc64.md: Copied from the corresponding PPC files from
601         r118846.
602
603 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
604
605         * mini-ops.h: Added OP_ROUND.
606
607         * cpu-x86.md: Added round.
608
609         * mini-x86.c: Added support for intrinsicing Math.Round (double).
610
611         * basic-math.cs: Added test_0_round to test rounding.
612
613         Contributed under MIT/X11 license.
614
615 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
616
617         * aot-compiler.c : Fix the Winx64 build.
618
619         Contributed under MIT/X11 license.
620
621 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
622
623         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
624         in OP_EXTRACT_R8 to avoid possible stack corruption.
625
626 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
627
628         * mini-ops.h: Added OP_EXTRACT_R8/I8.
629
630         * cpu-x86.md: Added extract_r8.
631
632         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
633         
634         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
635         a couple of OP_EXTRACT_I4.
636
637         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
638
639         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
640
641 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
642
643         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
644         and not 4.1. 
645
646 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
647
648         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
649         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
650
651         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
652         are not needed any more.
653
654         * mini.h: Remove the unused INS_LIST macros.
655
656         * mini.c (mini_method_compile): Remove a disable globalra case which is no
657         longer needed.
658
659         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
660         ir-emit.h.
661
662         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
663         mono_alloc_ireg () instead.
664
665         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
666         macros.
667
668         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
669         on amd64.
670
671         * aot-runtime.c (load_aot_module): Disable AOT when running under
672         CAS.
673
674         * mini-amd64.h: Change the monitor fastpath defines to check for
675         !PLATFORM_WIN32 so they work on *bsd too.
676
677         * mini.h mini.c mini-hhpa.c: Remove more unused code.
678
679         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
680
681         * mini.h (MonoCompile): Remove new_ir flag.
682
683         * regalloc.h regalloc.c: Remove unused code.
684
685         * cpu-*.md: Remove more unused opcodes.
686
687         * simple-cee-ops.h simple-mini-ops.h: Removed.
688
689         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
690         
691 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
692
693         * aliasing.h: Removed.
694
695         * *.c: Remove references to aliasing.h and inssel.h.
696
697         * mini.c: Remove additional unused functions.
698
699         * mini-ops.h cpu-*.md: Remove unused opcodes.
700
701 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
702
703         Remove the old JIT code.
704
705         * inssel*.brg: Removed.
706
707         * ssa.c abcremoval.c aliasing.c: Removed.
708
709         * ssa2.c: Renamed to ssa.c.
710
711         * abcremoval2.c: Renamed to abcremoval.c.
712
713         * *.c: Removed all !cfg->new_ir code.
714
715         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
716         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
717
718         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
719         
720 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
721
722         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
723         to simplify the code and cut back on the number of global symbols in the AOT
724         file.
725         
726         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
727
728 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
729
730         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
731         with the got/got_info tables.
732
733         * mini.h: Bump AOT file format version.
734         
735         * unwind.h: New file, contains definitions for stack unwinding.
736
737         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
738         to cfg->unwind_ops.
739         
740         * aot-compiler.c: Generalize the emitting of unwind information to use the
741         information in cfg->unwind_ops.
742
743         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
744
745         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
746         AOT method frames. Enable writing symbols for methods by default.
747
748 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
749
750         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
751         and make it work with vectors of element sizes 1, 2 and 4.
752
753         * simd-intrinsics.c: Enable getter for all vectors with element size
754         1, 2 or 4.
755
756         * simd-methods.h: Add the names of other getters.
757
758         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
759
760         * cpu-x86.md: Same.
761
762         * mini-x86.c: Same.
763
764 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
765
766         * mini-ppc.h: portability fix.
767
768 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
769
770         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
771         buggy and will overwrite it.
772
773 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
774
775         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
776         Use it to emit local symbols for all methods so AOTed methods show up with
777         their full name in gdb/valgrind output.
778
779 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
780
781         * mini-ppc.c: portability fixes.
782
783 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
784
785         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
786         entries out of the if (!generic_shared...) code so it is always done.
787         (mono_class_init_trampoline): Do the patching when running under valgrind
788         too, newer versions of valgrind have no problems with it.
789
790 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
791
792         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
793         further sections.
794
795 2008-11-13  Mark Probst  <mark.probst@gmail.com>
796
797         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
798         filters.
799
800 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
801
802         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
803
804 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
805
806         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
807
808         * cpu-x86.md: Same.
809
810         * mini-x86.c: Same.
811
812         * simd-intrinsics.c: Same.
813
814 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
815
816         * simd-intrinsics.c: Enable constructor intrinsics for all types.
817
818 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
819
820         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
821         to work with more Vector types.
822
823 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
824
825         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
826         store the elemens directly instead of using and intermediate.
827
828 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
829
830         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
831
832         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
833         to preserve %eax for aot plt trampolines.
834
835         * aot-compiler.c (compile_method): Don't skip synchronized methods.
836         (encode_method_ref): Flag synchronized methods so they won't go through
837         the AOT trampoline.
838
839         * aot-compiler.c: Additional work to support AOTing synchronized methods/
840         wrappers.
841
842         * cpu-ia64.md (jmp): Increase max length.
843
844 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
845
846         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
847         open generic classes.
848
849         * aot-compiler.c: Enable the ELF writer on ELF platforms.
850
851         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
852         box+brtrue optimization since it causes test failures on x86.
853
854 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
855
856         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
857
858         * cpu-x86.md: Same.
859
860         * mini-x86.c: Same.
861
862         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
863         for simd ctor values. 
864
865         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
866         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
867
868 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
869
870         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
871         LogicalRightShift.
872
873         * simd-instrincs.c: Same.
874
875         * basic-simd.cs: Same.
876
877 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
878
879         * ratests.cs: Add more tests.
880
881         * regalloc2.c (add_spill_code): Handle more corner cases.
882
883 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
884
885         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
886         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
887         both the source an destination of an instruction.
888
889 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
890
891         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
892         wapihandles.c: more portability changes.
893
894 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
895
896         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
897         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
898         safe to execute in a signal handler and the kernel provides better
899         the info in /proc/self/smaps. Avoid the assert on sigaction during
900         cleanup.
901
902 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
903
904         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
905         do the bblock linking hack if it is actually needed.
906
907         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
908         up linking.
909
910         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
911         crash problem is fixed.
912
913         * branch-opts.c (mono_remove_critical_edges): Link up newly added
914         bblocks.
915
916         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
917         for catch clauses.
918         (mini_method_compile): Set the starting value of next_vreg to 
919         MAX_IREGS + MAX_FREGS when using globalra.
920
921         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
922         filter clauses with BB_EXCEPTION_HANDLER.
923
924         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
925
926 2008-11-10  Mark Probst  <mark.probst@gmail.com>
927
928         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
929         space for stdcall.  Fixes regressions on Win32.
930
931 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
932
933         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
934         bblocks.
935         (linear_scan): Remove an assert which doesn't seem to be needed.
936
937         * local-propagation.c (mono_local_deadce): Avoid a call to
938         MONO_DELETE_INS which would screw up the instruction linking.
939
940         * mini.c (mono_decompose_op_imm): Make this work with globalra.
941
942         * regalloc2.c: Upgrade to work the current JIT code.
943
944 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
945
946         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
947         case.
948
949         * aot-runtime.c: Remove some dead code.
950
951         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
952         consistency.
953         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
954
955         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
956         trampolines using sscanf since atoi doesn't work on large unsigned values.
957
958         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
959         Initialize code_size.
960
961 2008-11-08  Mark Probst  <mark.probst@gmail.com>
962
963         * method-to-ir.c (mini_emit_inst_for_method): Make
964         Interlocked.CompareExchange work for Int arguments on 32 bit
965         archs, as well.
966
967 2008-11-07  Mark Probst  <mark.probst@gmail.com>
968
969         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
970
971 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
972
973         * main.c Fix MSVC build.
974
975         Contributed under MIT/X11 license.
976
977 2008-11-06  Mark Probst  <mark.probst@gmail.com>
978
979         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
980         alignment larger than 8 bytes are aligned correctly, too.
981
982         * mini.c: Honor the min_align field of MonoClass when laying out
983         the stack.
984
985 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
986
987         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
988
989         * aot-compiler.c (emit_plt): Fix a warning.
990         
991         * aot-compiler.c: Implement ARM support in the binary writer.
992
993 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
994
995         * basic-simd.cs: Add test for getter with byref arg.
996         Fix the naming of a few tests.
997         Add missing checks to a test.
998
999 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
1000
1001         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
1002
1003         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
1004         most of the full-aot support for monitor enter/exit trampolines.
1005
1006         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
1007         enter/exit trampoline creation functions.
1008
1009         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
1010         make dist.
1011
1012 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
1013
1014         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
1015         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
1016         implement the needed functionality without adding crap to the runtime.
1017
1018 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
1019
1020         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
1021         non-x86 builds.
1022
1023         * mini.c (mono_build_date): New global version holding the build date in
1024         string format.
1025         
1026         * Makefile.am (buildver.c): Generate a file containing the build date.
1027
1028         * main.c: Set the build date from the generated file.
1029
1030         * mini.c (mono_get_runtime_build_info): New helper function returning build
1031         information in a string format.
1032         
1033         * driver.c (mono_main): Print the build date in --version.
1034
1035         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
1036         file when the bind-to-runtime-version option is used.
1037
1038 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1039
1040         * simd-intrinsics.c: Fix bug when using getters and byref args. 
1041
1042 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1043
1044         * simd-methods.h: Rename prefetch methods.
1045
1046         * simd-intrinsics.c: Same.      
1047
1048 2008-11-05  Mark Probst  <mark.probst@gmail.com>
1049
1050         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
1051         sizes.
1052
1053 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1054
1055         * aot-compiler.c: Use the bundled elf header files instead of depending on
1056         the system one.
1057         
1058         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
1059         mempool.
1060
1061         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
1062         on every call.
1063
1064 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
1065
1066         * cpu-x86.md: Add store nta ops.
1067
1068         * mini-ops.h: Same.
1069
1070         * mini-x86.c: Same.
1071
1072         * mini.h: Add an enum for simd prefetch modes.
1073
1074         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
1075         of store. Use the changed code to support store nta.
1076
1077         * simd-intrinsics.c: Add prefetch ops for all vector types.
1078
1079 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1080
1081         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
1082         threads.
1083         
1084         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
1085         names.
1086
1087         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
1088         trampolines.
1089
1090 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1091
1092         * mini-x86.c: Fixed commit.
1093
1094 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * aot-compiler.c (emit_plt): Align the plt section only on x86.
1097
1098 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1099
1100         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
1101         and MONITOR_EXIT, for the ASM fastpaths.
1102
1103         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
1104         available.
1105
1106         * mini.c, patch-info.h: Signature and patch infos for
1107         Monitor.Enter/Exit trampolines.
1108
1109         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
1110
1111         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
1112         Monitor.Enter/Exit ASM fastpath for Linux.
1113
1114 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1115
1116         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
1117
1118         * objects.cs: Add a new test.
1119         
1120         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
1121
1122         * aot-runtime.c (load_method): Run class initialization in the PLT case even
1123         if MONO_LOG_LEVEL is set.
1124
1125         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
1126
1127         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
1128
1129         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
1130         
1131         * aot-compiler.c: Change the relocation code to use virtual addresses instead
1132         of file offsets. Align the sections belonging to the data segment to 
1133         PAGESIZE.
1134
1135 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
1136
1137         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
1138         elf.h. Port it to amd64.
1139
1140 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1141
1142         * driver.c: Enable SIMD by default.
1143
1144 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1145
1146         * cpu-x86.md: Add prefetch op.
1147
1148         * mini-ops.h: Same.
1149
1150         * mini-x86.c: Same.
1151
1152         * mini.h: Add an enum for simd prefetch modes.
1153
1154         * simd-methods.h: Add prefetch function names.
1155
1156         * simd-intrinsics.c: Add prefetch ops for all vector types.
1157
1158 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
1159
1160         * aot-compiler.c (emit_bytes): Speed this up a little.
1161
1162 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
1163
1164         * aot-compiler.c: Add JIT time etc. statistics.
1165         
1166         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
1167
1168         * mini.h (MonoCompile): Add 'got_offset' field.
1169
1170         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
1171         method_got_offsets array.
1172
1173         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
1174         wrappers.
1175
1176         * aot-compiler.c (compile_method): Add generic method instances referenced
1177         by the method to the list of methods to be compiled, this is required so if
1178         A<T> references B<T>, and another assembly references A<int>, then it will
1179         also get a copy of B<int>.
1180
1181         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
1182         when checking for monitor enter/exit.
1183
1184 2008-10-30  Mark Probst  <mark.probst@gmail.com>
1185
1186         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
1187         for Monitor.Enter and Monitor.Exit if enabled.
1188
1189         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
1190         Solaris.
1191
1192 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
1193
1194         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
1195         of an OP_MOVE. Fixes #440046.
1196
1197         * basic-long.cs: Add a new test.
1198
1199 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
1200
1201         * mini.h: Add synchronization note for the managed counter-part.
1202
1203         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
1204         returns the simd caps of the current cpu.
1205
1206 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
1207
1208         * basic-simd.cs: Remove Console.WriteLine.
1209
1210 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1211
1212         * basic-simd.cs: New tests for Vector2ul.
1213
1214 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1215
1216         * simd-intrinsics.c: Add new vector type Vector2ul.
1217
1218 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1219
1220         * basic-simd.cs: New tests for Vector2l.
1221
1222 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1223
1224         * cpu-x86.md: Add long version of most packed int ops.
1225
1226         * mini-ops.h: Same.
1227
1228         * mini-x86.h: Same.
1229
1230         * simd-intrinsics.c: Add new vector type Vector2l.
1231
1232 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1233
1234         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
1235
1236         * simd-methods.h: Remove SN_op_BitwiseXor.
1237
1238 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
1239
1240         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
1241         alignment.
1242
1243 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1244
1245         * basic-simd.cs: Test for Vector2d.
1246
1247         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
1248         value.
1249
1250 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1251
1252         * cpu-x86.md: Add double version of all packed float ops.
1253
1254         * mini-ops.h: Same.
1255
1256         * mini-x86.h: Same.
1257
1258         * simd-intrinsics.c: Add new vector type Vector2d.
1259
1260         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
1261
1262         * simd-methods.h: Add Duplicate.
1263
1264 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1265
1266         * basic-simd.cs: Test for packing with signed saturation.
1267
1268 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
1269
1270         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
1271         found in the TYPESPEC table.
1272
1273 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
1274
1275         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
1276         too.
1277
1278         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
1279
1280         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
1281         instead of the RVA, since the RVA can be changed by tools like the cil 
1282         stripper.
1283
1284         * method-to-ir.c (mono_method_to_ir2): Ditto.
1285
1286         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
1287         (deserialize_variable): Ditto.
1288
1289 2008-10-25  Martin Baulig  <martin@ximian.com>
1290
1291         * debug-mini.c (write_variable): Use
1292         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
1293
1294 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1295
1296         * cpu-x86.md: Add unsigned variants of packd and packw.
1297
1298         * mini-ops.h: Same.
1299
1300         * mini-x86.h: Emit the right instruction for packd and packw.
1301         Add unsigned variants of packd and packw.
1302
1303         * simd-intrinsics.c: Packd and packw were used in place of their
1304         unsigned variants. Change that.
1305         Add intrinsics for (Signed)PackWithSignedSaturation.
1306
1307         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
1308
1309 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1310
1311         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
1312
1313 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1314
1315         * mini-ops.h: Remove dword packed add/sub with saturation ops.
1316
1317         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
1318
1319         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
1320         sse instructions.
1321
1322         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
1323
1324 2008-10-24  Mark Probst  <mark.probst@gmail.com>
1325
1326         * method-to-ir.c, mini.c: Special casing for the synchronized
1327         wrapper for the ldtoken+GetTypeFromHandle case.
1328
1329 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1330
1331         * mini.c (mono_replace_ins): Move this to branch-opts.c.
1332
1333         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
1334         created/split bblocks.
1335
1336 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1337
1338         * mini-ops.h: Add packed signed mul high.
1339         
1340         * cpu-x86.md: Same.
1341
1342         * mini-x86.c (mono_arch_output_basic_block): Same.
1343
1344         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
1345
1346         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
1347
1348 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1349
1350         * basic-simd.cs: Tests for Vector16sb.
1351
1352 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1353
1354         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
1355
1356 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1357
1358         * mini-ops.h: Add packed signed min, max and compare greater.
1359         
1360         * cpu-x86.md: Same.
1361
1362         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
1363         saturation.
1364
1365         * simd-methods.h: Add CompareGreaterThan.
1366
1367         * simd-methods.h: Remove CompareEquals.
1368
1369         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
1370
1371         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
1372
1373         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
1374         CompareEqual.
1375
1376 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1377
1378         * basic-simd.cs: Fix tests due to change in the API.
1379
1380 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1381
1382         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
1383
1384 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1385
1386         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
1387
1388         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
1389         inst_offset as this has invalid values for LDADDR.
1390
1391 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1392
1393         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1394
1395         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
1396
1397 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1398
1399         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
1400         for accessing field->data.
1401
1402 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1403
1404         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1405
1406 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1407
1408         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
1409
1410         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
1411
1412 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1413
1414         * dominators.c (mono_compute_natural_loops): Allocate GList enties
1415         from the cfg mempool.
1416
1417 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1418
1419         * basic-simd.cs: Tests for new methods in Vector8us.
1420
1421 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1422
1423         * mini-ops.h: Add multiply and store high.
1424         
1425         * cpu-x86.md: Same.
1426
1427         * mini-x86.c (mono_arch_output_basic_block): Same.
1428
1429         * simd-methods.h: Same.
1430
1431         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
1432         and CompareEqual.
1433
1434 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1435
1436         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
1437         mono_class_setup_vtable ().
1438
1439         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
1440         mono_class_get_vtable_entry () for accessing klass->vtable.
1441
1442         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
1443
1444         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
1445         found.
1446
1447         * method-to-ir.c (mono_save_token_info): Don't save references made from
1448         wrappers.
1449
1450         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
1451         of generic instances.
1452
1453         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
1454
1455 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1456
1457         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
1458         OP_JMP depends on the method signature.  Calculate it properly.
1459
1460 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1461         
1462         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
1463         called directly.
1464
1465         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
1466         instances.
1467         (emit_extra_methods): Add another table mapping method indexes to 
1468         offsets in the extra_method_info table.
1469
1470         * mini.h: Bump AOT file format version.
1471         
1472         * aot-runtime.c: Merge most of the code from mono_aot_get_method
1473         and mono_aot_get_method_from_token () into one function.
1474
1475 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1476
1477         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
1478         separate counter.
1479
1480 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
1481
1482         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
1483         methods.
1484
1485         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
1486         disable_aot.
1487
1488         * mini.c (mono_patch_info_equal): Compare the generic context as well.
1489
1490         * mini.h: Bump aot file format version.
1491
1492         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
1493         AOT file can contain native code for methods which are not in the METHOD
1494         table. Generate code for non-sharable generic instances of generic methods
1495         found in the METHODSPEC table.
1496         
1497         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
1498         encoding generic type handles.
1499
1500         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
1501         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
1502
1503         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
1504         macros + MONO_ADD_INS.
1505
1506         * mini.c (mono_jump_info_token_new2): New function which takes a generic
1507         context as well.
1508
1509         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
1510
1511         * mini.h: Bump aot file format version.
1512
1513         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
1514
1515 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1516
1517         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
1518         platforms, with definable stack alignment value.  Set to 16 now
1519         for all platforms.
1520
1521         * mini.c, mini.h, driver.c: Command line option for disabling
1522         stack alignment.
1523
1524 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1525
1526         * basic-simd.cs: Tests for new methods in Vector4ui.
1527
1528 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1529
1530         * mini-ops.h: Add packed int shuffle.
1531         
1532         * cpu-x86.md: Same.
1533
1534         * mini-x86.c (mono_arch_output_basic_block): Same.
1535
1536         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
1537         extract mask, max, min, shuffle.
1538
1539         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
1540
1541 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1542
1543         * basic-simd.cs: Tests for new methods in Vector8us.
1544
1545 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1546
1547         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
1548         RuntimeTypeHandle, not a TypedReference.
1549
1550 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
1551
1552         * simd-intrinsics.c: remove relocations.
1553
1554 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
1555
1556         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
1557         optimizations from the x86 backend.
1558
1559 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
1560
1561         * simd-methods.h, simd-intrinsics.c: debloat method names and
1562         prepare for no relocations.
1563
1564 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1565
1566         * mini-ops.h: Add packed min/equal and sum of absolute differences.
1567         
1568         * cpu-x86.md: Same.
1569
1570         * mini-x86.c (mono_arch_output_basic_block): Same.
1571
1572         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
1573         extract mask, max, min and sum of absolute differences.
1574
1575         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
1576         method name.
1577
1578 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1579
1580         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
1581         Renamed one test for consistency.
1582
1583 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1584
1585         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
1586         fix to the code that deal with other blocks.
1587
1588 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1589
1590         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
1591
1592 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1593
1594         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
1595         that deals with vreg interference. Explicitly check for OP_LDADDR to be
1596         able to process the source reg.
1597
1598 2008-10-16  Martin Baulig  <martin@ximian.com>
1599
1600         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
1601
1602         * inssel.brg: Add `OP_HARD_NOP'.
1603
1604         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
1605
1606         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
1607         `OP_HARD_NOP' instruction when running inside the debugger.
1608
1609         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
1610         `OP_HARD_NOP' instruction when running inside the debugger.
1611
1612 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1613
1614         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
1615         now works. The issue with the regalloc tripping up no longer
1616         happens.
1617
1618         * simd-intrinsics.c (load_simd_vreg): Same.
1619
1620 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1621         
1622         * basic-simd.cs: Tests for new Vector8ui methods.
1623
1624 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1625
1626         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
1627         only for type. This fixes crashes where MonoInst::klass is checked
1628         for ops of type != VTYPE or OBJ.
1629
1630         * simd-intrinsics.c (load_simd_vreg): Same.
1631
1632 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1633
1634         * mini-ops.h: Add ops for packed shuffle/max/avg and
1635         extract mask.
1636         
1637         * cpu-x86.md: Same.
1638
1639         * mini-x86.c (mono_arch_output_basic_block): Same.
1640
1641         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
1642         extract mask.
1643
1644         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
1645         to emit extract mask op.
1646
1647         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
1648         to emit word shuffles.
1649
1650 2008-10-15  Mark Probst  <mark.probst@gmail.com>
1651
1652         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
1653         the largest alignment needed by a variable, but at least
1654         sizeof(gpointer).
1655
1656 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1657
1658         * basic-simd.cs: Tests for the fixes in the last commit.
1659
1660 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1661
1662         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
1663         no longer handles STACK_PTR input.
1664
1665         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
1666
1667         * simd-intrinsics.c (load_simd_vreg): New function that works like 
1668         get_simd_vreg   but handles STACK_PTR input.
1669
1670         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
1671         as the input can be an arbitrary pointer.
1672
1673         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
1674         LDADDR local optimization directly otherwise use a store op.
1675
1676 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1677
1678         * basic-simd.cs: Tests for dup low and dup high.
1679
1680 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1681
1682         * mini-ops.h: Add dup low and dup high ops.
1683         
1684         * cpu-x86.md: Same.
1685
1686         * mini-x86.c (mono_arch_output_basic_block): Same.
1687
1688         * simd-intrinsics.c (vector4f_intrinsics): Same.
1689
1690 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1691
1692         * basic-simd.cs: Tests for recently added functionality.
1693
1694 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1695
1696         * mini-ops.h: Add remaining sse1 fp ops.
1697         
1698         * cpu-x86.md: Add remaining sse1 fp ops.
1699
1700         * mini-x86.c (mono_arch_output_basic_block): Same.
1701
1702         * mini.h: Add enum for simd FP compare conditions.
1703
1704         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
1705
1706         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
1707         so the backed can generate the appropriate op.
1708
1709 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1710         This patch squeese one more byte from the SimdIntrinsc struct.
1711
1712         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
1713         a a shift amount intead of simply or'ing it.
1714
1715         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
1716
1717         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
1718         byte so we can have an aditional flags field without increasing struct size.
1719
1720         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
1721         against the simd_supported_versions bitmask.
1722
1723         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
1724
1725 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
1726
1727         * mini.c: remove rawbuffer code (the only use here is unsafe because
1728         it takes locks during signal handling and the kernel now provides much
1729         better info in proc/pid/smaps these days).
1730
1731 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
1732
1733         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
1734         OP_X86_PUSH_OBJ. Fixes #434620.
1735
1736         * objects.cs: Add a test.
1737         
1738 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
1739
1740         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
1741         that the packuswb/packusdw don't work with unsigned numbers for what
1742         would be negative numbers in signed format.
1743
1744         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
1745         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
1746
1747         * mini-ops.h: Add doubleword forms of many ops and packing ones.
1748
1749         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
1750
1751         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
1752
1753         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
1754
1755         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
1756         add more ops.
1757
1758         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
1759         version as the enum in mini.h.
1760
1761         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
1762         for sse3 ops, check the simd_version field if present. This way the code
1763         works with all versions of sse.
1764
1765 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1766
1767         * simd-intrinsics.c: Fixed intrinsic name typo.
1768
1769         * mini.h: Added missing simd exported function.
1770
1771         * basic-simd.cs: Added tests for Vector4ui.
1772         Fixed broken test for Vector16b.
1773
1774 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
1775
1776         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
1777         the max length to 64.
1778
1779 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1780
1781         * method-to-ir.c: Only do the fast virtual generic method call for
1782         non-wrapper methods.
1783
1784         * mini.h, mini-trampolines.c: The new generic virtual remoting
1785         trampoline handles virtual method calls via the vtable (as done by
1786         the fast virtual generic method calls) to remoting proxies.
1787
1788         * mini.c (mono_jit_create_remoting_trampoline): For generic
1789         methods reate a generic virtual remoting trampoline.
1790
1791         * mini-amd64.h: Enable fast virtual generic method calls again.
1792
1793 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1794
1795         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
1796         restore registers when doing tail calls.
1797
1798 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1799
1800         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
1801         Vector4ui.
1802
1803 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1804
1805         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
1806
1807 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1808
1809         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
1810
1811 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1812
1813         * basic-simd.cs: Retrofit for API changes.
1814
1815 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1816
1817         * mini-ppc.c: Handle integer stack arguments for tail calls.
1818
1819 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1820
1821         * optflags-def.h: Removed sse3 optimization.
1822
1823         * driver.c: Same.
1824
1825         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
1826         sse3.
1827
1828         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
1829
1830         * mini.h: Added enumeration with simd versions.
1831
1832         * simd-intrinsics.c (emit_intrinsics): Use the new static var
1833         for detecting SSE3.
1834
1835         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
1836
1837         * mini.c (mini_init): Call mono_simd_intrinsics_init.
1838
1839 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1840
1841         * basic-simd.cs: Added tests for Vector8u and Vector16u.
1842
1843         * basic-simd.cs: Fixed test naming.
1844
1845 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1846
1847         * mini-ops.h: Added ops for packed and saturated math, shifts
1848         and packing/unpacking.
1849
1850         * cpu-x86.md: Added descriptors for the above ops.
1851
1852         * mini-x86.c: Added code to emmit the above ops.
1853
1854         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
1855
1856 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
1857
1858         * aot-compiler.c (compile_method): Enable AOT for generic code.
1859
1860         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
1861
1862 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
1863
1864         * mini.c: add a workaround for a common screwup that ends up blamed
1865         to mono (other processes blocking signal delivery).
1866
1867 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1868
1869         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
1870         in the LDFLD/STFLD opcodes. Fixes #432673.
1871
1872         * iltests.il.in: Add a new test.
1873
1874 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
1875
1876         * mini-arm.c: attach the thread in unmanaged->managed transitions
1877         using delegates (bug #433148).
1878
1879 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1880
1881        * basic-simd.cs: Use new ShuffleSel constants.
1882
1883 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1884
1885         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
1886
1887         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
1888         only disable simd intrinsics if no sse2 is detected.
1889
1890         * optflags-def.h: Added sse3.
1891
1892         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
1893         is disabled.
1894
1895 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1896
1897         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
1898         when adding delegate-invoke wrappers.
1899
1900 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1901
1902         * Makefile.am: Reenable the simd tests.
1903
1904 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
1905
1906         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
1907           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
1908           other vreg is allocated to that hreg.
1909
1910         Contributed under MIT/X11 license.
1911
1912 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1913
1914         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
1915         yet checked in.
1916
1917 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1918
1919         * basic-simd.cs: New test suite for SIMD intrinsics.
1920
1921         * Makefile.am: Added new tests.
1922
1923 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1924
1925         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
1926
1927         * mini-ops.h: Same.
1928
1929         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
1930
1931         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
1932         using SSE2 aware opcodes.
1933
1934         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
1935         is enabled, this code path is only reachable if conversion ops are emmited after
1936         mono_method_to_ir.
1937
1938         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
1939
1940         This optimization saves 6 bytes per conversion against the old version.
1941
1942 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1943
1944         * aot-compiler.c (compile_method): Don't skip methods referencing 
1945         generic methods without a corresponding entry in token_info_hash, since
1946         encode_method_ref () can handle all generic methods now.
1947
1948         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
1949         generic context is set.
1950         
1951         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
1952         generic sharing of LDTOKEN.
1953
1954 2008-10-06  Mark Probst  <mark.probst@gmail.com>
1955
1956         * mini-amd64.h: Temporarily disabled fast virtual generic method
1957         calls because it breaks the System.Runtime.Remoting tests.
1958
1959 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1960
1961         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
1962
1963         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
1964         so inlining actually works.
1965         (check_inline_caller_method_name_limit): Ditto.
1966
1967 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
1968
1969         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
1970         64 bit safety (from Olaf Hering and Andreas Färber).
1971
1972 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1973         
1974         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
1975         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
1976         unused virtual call support code.
1977
1978         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
1979         
1980         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
1981         which can't use aot trampolines.
1982         (decode_patch): Don't create aot trampolines for methods which can't use
1983         them.
1984
1985         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
1986         use aot trampolines.
1987
1988         * mini.h: Bump AOT image format version.
1989         
1990 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
1993         to save_token_info () since cmethod is inflated for constrained calls.
1994
1995         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
1996
1997 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
1998
1999         * Makefile.am: Add build rules for ppc64.
2000         This avoids the build failing at pedump with unresolved symbols
2001         due to lack of arch_sources. Instead it will now fail earlier
2002         due to lack of cpu-ppc64.md.
2003
2004         Contributed under MIT/X11 license.
2005
2006 2008-10-04  Mark Probst  <mark.probst@gmail.com>
2007
2008         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
2009         tail calls.
2010
2011         * iltests.il.in: Add test case for tail call with many arguments.
2012
2013 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
2014
2015         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
2016         to the fast virtual generic method code until the aot case is fixed.
2017
2018 2008-10-03  Mark Probst  <mark.probst@gmail.com>
2019
2020         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
2021
2022 2008-10-03  Mark Probst  <mark.probst@gmail.com>
2023
2024         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
2025         thunks.
2026
2027 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
2028         
2029         * simd-intrinsics.c: Forgot to add this one.
2030
2031         * mini-codegen.c: Fix macro in case SIMD is not supported.
2032
2033 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
2034         
2035         This patch land initial JIT support for simd intrinsics.
2036
2037         * mini-x86.h: Added new define to make --enable_minimal work on x86.
2038
2039         * Makefile.am: Added simd-intrinsics.c
2040
2041         * simd-intrinsics.c: New file with simd instrinsic related
2042         code.
2043
2044         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
2045
2046         * cpu-x86.md: Add simd related instructions.
2047
2048         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
2049
2050         * driver.c: Added two new --regression variants.
2051
2052         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
2053
2054         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
2055
2056         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
2057         extract some complicated logic to helper functions.
2058
2059         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
2060
2061         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
2062
2063         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
2064         the specialized simplification pass.
2065
2066         * method-to-ir.c (mono_spill_global_vars): Use new macro.
2067
2068         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
2069
2070         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
2071         table.
2072
2073         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
2074         if MONO_ARCH_NEED_SIMD_BANK is defined.
2075
2076         * mini-ops.h: Added the new simd ops.
2077
2078         * mini-x86.c: Added mono_arch_xregname.
2079
2080         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
2081
2082         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
2083
2084         * mini-x86.h: Define simd related MONO_ARCH macros.
2085
2086         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
2087
2088         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
2089
2090         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
2091         MONO_CLASS_IS_SIMD to deal with simd related IR.
2092
2093         * mini.h (MonoInst): Added spill_var to the backend union.
2094
2095         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
2096
2097         * mini.h: Added forward declarations of the new simd fuctions.
2098
2099         * optflags-def.h: Added new optimization names SIMD.
2100
2101         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
2102
2103         * regalloc.h: Added support for working with 3 register banks.
2104
2105         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
2106
2107         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
2108
2109 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
2110
2111         * mini-exceptions.c: remove 64 bit related ifdef clutter.
2112
2113 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
2114
2115         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
2116         instead of one on 64 bit systems.
2117
2118         * method-to-ir.c: Remove unused includes.
2119
2120 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
2121
2122         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
2123         cfg->used_int_regs, since the two are different on arm.
2124
2125 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2126
2127         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
2128         mono_method_get_vtable_index() to get the vtable index.
2129
2130 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2131
2132         * method-to-ir.c (mono_method_to_ir2): Don't create native
2133         wrappers for array methods, because they're never called (and if
2134         they were called they wouldn't work).
2135
2136 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2137
2138         * method-to-ir.c (mono_method_to_ir2): Array methods are
2139         special-cased and must not be invoked indirectly via the (M)RGCTX
2140         when generic sharing is turned on.  Fixes #431413.
2141
2142 2008-10-01  Mark Probst  <mark.probst@gmail.com>
2143
2144         * method-to-ir.c: When generic sharing is active, call
2145         non-interface virtual generic methods via the standard trampoline.
2146
2147         * mini-trampolines.c: Handle virtual generic shared methods.
2148
2149         * mini.h, mini-x86.c, mini-x86.h: New argument for
2150         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
2151         method thunks and which is the trampoline to call if the lookup
2152         fails.  Enable the virtual generic method thunk for x86.
2153
2154         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
2155         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
2156         argument but assert that it's NULL, because these archs don't yet
2157         implement the virtual generic method thunk.  Changes in the IMT
2158         thunk data structures.
2159
2160 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
2161
2162         * aot-compiler.c (emit_globals): Avoid invalid characters in
2163         the static linking symbol.
2164
2165         * objects.cs: Add a test for the range check optimization. Fix warnings.
2166
2167         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
2168         optimization from the current JIT.
2169
2170         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
2171         later in decompose_array_access_opts () to allow more optimizations.
2172
2173         * method-to-ir.c (mono_handle_soft_float): Rename this to 
2174         mono_decompose_soft_float () for consistency.
2175
2176         * mini-ops.h: Fix arguments of OP_STRLEN.
2177
2178         * method-to-ir.c (save_cast_details): Extract the cast details saving code
2179         into a separate function.
2180         (reset_cast_details): Ditto.
2181         (handle_unbox): Save cast details. Fixes #431254.
2182
2183         * method-to-ir.c: Remove some obsolete FIXMEs.
2184
2185 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2186
2187         * ir-emit.h (alloc_dreg): Write a warning before crashing.
2188
2189 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2190
2191         * mini-codegen.c: More work on macros to make them
2192         ready for multiple regbanks.
2193
2194 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2195
2196         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
2197
2198         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
2199
2200 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2201
2202         * mini-codegen.c (mono_spillvar_offset): Proper support for
2203         multiple regbanks.
2204
2205 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
2206
2207         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
2208         the stack overflow changes.
2209
2210 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2211
2212         * mini-codegen.c: Make all bank macros depend on reg_bank.
2213
2214         * mini-codegen.c (mono_local_regalloc): Make free mask
2215         initialization regbank aware.
2216
2217 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2218
2219         * mini-codegen.c (mono_local_regalloc): Extract callee
2220         mask selection to a function and make it regbank aware.
2221
2222 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2223
2224         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
2225         code to deal with many regbanks.
2226
2227 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
2228
2229         * mini-codegen.c: More fp->regbank changes.
2230
2231 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
2232
2233         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
2234         of a hardcoded constant.
2235
2236 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
2237
2238         * method-to-ir.c (type_from_stack_type): Fix typo.
2239
2240 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
2241
2242         * mini-ia64.c (emit_move_return_value): Convert float return values to
2243         double.
2244
2245         * objects.cs: Add a new test.
2246         
2247         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
2248         VARARG methods to fix an assert later.
2249
2250         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
2251         end so it at least compiles.
2252
2253 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
2254
2255         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
2256
2257 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
2258
2259         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
2260         optimization to a new function (emit_optimized_ldloca_ir) and enable
2261         it for both ldloca and ldloca_s.
2262
2263 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
2264
2265         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
2266         gshared CASTCLASS code.
2267
2268         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
2269         amd64, where the libc stack unwinder encounters stack frames referring to
2270         native code in unmapped memory.
2271
2272         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
2273         sharing.
2274
2275         * generics.cs: Add new test.
2276
2277 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
2278
2279         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
2280         add a check that one of the ARM_FPU_ constants is defined.
2281
2282         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
2283         
2284         * mini-exceptions.c: Fix build on non-altstack platforms.
2285
2286         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
2287         sharing of vtypes.
2288
2289         * ir-emit.h: Add a comment to NEW_PCONST.
2290
2291         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
2292
2293         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
2294
2295         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
2296         after the changes to MonoJitDomainInfo.
2297
2298 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2299
2300         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
2301
2302 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2303
2304         * mini-ppc.c: Compiler warning fixes.
2305
2306 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2307
2308         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
2309         for pinvokes.
2310
2311 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2312
2313         * exceptions-ppc.c, mini-ppc.h: Compile
2314         mono_arch_handle_altstack_exception() on Darwin, too.
2315
2316 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2317
2318         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
2319         work on archs which don't have generic sharing implemented, only
2320         without the vtable_arg.
2321
2322 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2323
2324         * mini.c: Added comment explaining why delegate ctor icall
2325         wrappers are compiled.
2326
2327 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2328
2329         * mini.c: Don't produce trampolines to delegate ctor icall
2330         wrappers but compile them upfront.
2331
2332 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
2333
2334         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
2335         runtime-set function when going back to managed code. Currently this
2336         is used to set back the protection on the soft ovf pages and/or to
2337         throw the stack overflow exception that happened in unmanaged code.
2338
2339 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
2340
2341         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
2342         runtime-set function when going back to managed code. Currently this
2343         is used to set back the protection on the soft ovf pages and/or to
2344         throw the stack overflow exception that happened in unmanaged code.
2345
2346 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
2347
2348         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
2349         the support code for restoring stack protection after stack overflows
2350         that happen in unmanaged code. Don't set the exec permission on the
2351         soft overflow area.
2352
2353 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
2354
2355         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
2356         delegate->method_ptr is set. Fixes #428054.
2357
2358 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2359
2360         * tests.cs: Rename to ratests.cs.
2361
2362         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
2363         emit_get_rgctx_... functions.
2364
2365 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2366
2367         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
2368
2369 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2370
2371         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
2372         before asserting that method is sharable.
2373
2374 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2375
2376         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
2377         whether method needs a static RGCTX wrapper used instead of
2378         complex conditions.
2379
2380         * generic-sharing.c, mini.h: A few functions moved to
2381         metadata/generic-sharing.c.
2382
2383 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2384
2385         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
2386         Generic code sharing for value types, which essentially means
2387         treating value type methods like static methods.  The RGCTX is
2388         passed in the same way.
2389
2390 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2391
2392         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
2393         opcode when creating multi-dimensional arrays of open types.
2394
2395         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
2396         open generic types.
2397
2398         * generics.cs: Add a test.
2399
2400         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
2401
2402 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2403
2404         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
2405
2406         * mini.c (mini_method_compile): Set it when running under the debugger. 
2407
2408         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
2409         vreg optimization if the flag is set.
2410
2411         * driver.c (mono_main): Add --attach= option to pass options to
2412         the attach agent.
2413
2414         * mini.c (sigquit_signal_handler): Start the attach agent.
2415
2416         * ssapre.c: Disable this to save space since it is not yet ported to
2417         linear IR.
2418
2419         * regalloc2.c: Disable this to save space.
2420
2421         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
2422
2423 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
2424
2425         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
2426         the -v option useful again.
2427
2428 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2429
2430         * mini-amd64.c (mono_arch_output_basic_block): Add support for
2431         --break-at-bb.
2432
2433         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
2434         arrays of arrays. Fixes #428406.
2435
2436         * method-to-ir.c (mini_emit_castclass): Ditto.
2437
2438         * objects.cs: Add new test.
2439         
2440 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
2441
2442         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
2443         was wrong at it choked against target_type_is_incompatible for byref types.
2444
2445 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2446
2447         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
2448         places.
2449
2450 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
2451
2452         * mini-exceptions.c: update a few more exceptions-related counters.
2453
2454 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
2455
2456         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
2457         new functions to allocate from persistent mempools.
2458
2459 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2460
2461         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
2462         multiple register banks in the future.
2463
2464         * mini-codegen.c (mono_local_regalloc): Fix a warning.
2465
2466 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
2467
2468         * mini.c (type_to_eval_stack_type): Remove duplicated function.
2469
2470         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
2471
2472         * mini.h: Export type_to_eval_stack_type.
2473
2474         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
2475         is only ins->klass of byref types.
2476
2477 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
2478
2479         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
2480         (mini_emit_memcpy2): Ditto.
2481
2482         * mini-amd64.c: Fix a warning.
2483
2484 2008-09-21  Mark Probst  <mark.probst@gmail.com>
2485
2486         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
2487         linking.
2488
2489 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
2490
2491         * method-to-ir.c: Extract stloc micro-optimization to a
2492         function and apply it to all cases.
2493
2494 2008-09-19  Mark Probst  <mark.probst@gmail.com>
2495
2496         * method-to-ir.c: Don't fail generic code sharing in cases we
2497         already support.
2498
2499 2008-09-18  Mark Probst  <mark.probst@gmail.com>
2500
2501         * mini-ppc.c: Handle structs in tailcalls on Darwin.
2502
2503 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
2504
2505         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
2506         implementation.
2507
2508 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
2509
2510         * trace.c: make tracing more useful and correct, with per-thread
2511         id and indent info.
2512
2513 2008-09-15  Mark Probst  <mark.probst@gmail.com>
2514
2515         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
2516         doing a method call and the argument is an R4.
2517
2518 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
2519
2520         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
2521         generic methods.
2522
2523 2008-09-13  Mark Probst  <mark.probst@gmail.com>
2524
2525         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
2526
2527 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
2528
2529         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
2530         (MONO_JUMP_TABLE_FROM_INS): Ditto.
2531
2532 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2533
2534         * driver.c: Add a --agent argument (not supported yet) to load managed
2535         agent assemblies before loading the main assembly, similarly to how the
2536         Java VM handles agents.
2537
2538 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2539
2540         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
2541         function to do stack layout of local variables.
2542
2543 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2544
2545         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
2546         calculation.
2547
2548 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2549
2550         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
2551         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
2552         JIT if DISABLE_JIT is defined.
2553
2554         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
2555         defined.
2556
2557 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2558
2559         * iltests.il.in: Disable the fconv test on PPC (the result is
2560         undefined according to ECMA).
2561
2562 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2563
2564         * iltests.il.in: Enable tail call tests for PPC.
2565
2566         * mini.h: Add variable for storing incoming valuetype argument
2567         addresses for tail calls.
2568
2569         * mini-ppc.c: Implement valuetype arguments and return values for
2570         tailcalls on Linux.
2571
2572 2008-09-09  Mark Probst  <mark.probst@gmail.com>
2573
2574         * mini-ppc.c: Partially implement tail calls (struct arguments and
2575         return values not supported).
2576
2577         * method-to-ir.c: Enable tail calls on PPC.
2578
2579 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
2580
2581         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
2582         runtime-invoke wrappers to work around the problem of them getting
2583         assigned to a random class.
2584
2585         * aot-runtime.c (mono_aot_get_method): Ditto.
2586         
2587 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
2588
2589         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
2590         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
2591
2592 2008-09-07  Mark Probst  <mark.probst@gmail.com>
2593
2594         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
2595         until they're implemented properly.
2596
2597         * exceptions-ppc.c: Use arch-independent exception-handling code
2598         instead of custom one.
2599
2600         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
2601         for Linear IR.
2602
2603         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
2604
2605         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
2606         applies when __powerpc__ is defined.
2607
2608 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
2609
2610         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
2611         methods to their code to avoid computing the full name of wrappers and
2612         doing a lookup in a string hash table.
2613
2614 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2615
2616         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
2617         we identify bblocks before method_to_ir () is ran.
2618
2619         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
2620         Also avoid optimizing branches pointing to themselves.
2621
2622         * mini.c (mini_method_compile): Ditto. Fixes #422947.
2623
2624 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2625
2626         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
2627
2628 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2629
2630         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
2631         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
2632         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
2633         'buf'.
2634
2635         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
2636         jumped to the same entry in plt_jump_table.
2637
2638 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
2639
2640         * method-to-ir.c (initialize_array_data): Handle field with RVA from
2641         dynamic images.
2642
2643 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
2644
2645         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
2646         other assignment can be if converted. Saves 1.5% on corlib size and fixes
2647         #421807.
2648
2649 2008-08-29  Geoff Norton  <gnorton@novell.com>
2650
2651         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
2652         segment, and doesn't properly handle .space as .text.  Fixes
2653         AOT Mach/ARM
2654
2655 2008-08-29  Geoff Norton  <gnorton@novell.com>
2656
2657         * mini.c: Disable the mach exception handler when running on 
2658         ARM
2659
2660 2008-08-29  Geoff Norton  <gnorton@novell.com>
2661
2662         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
2663         globals on Darwin/ARM
2664
2665 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
2666
2667         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
2668         since too many things depend on it. Instead, call 
2669         mono_runtime_set_no_exec ().
2670         
2671         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
2672         the new JIT.
2673
2674         * aot-compiler.c: Add an 'asm-only' AOT option.
2675
2676         * mini.c: Avoid initializing the runtime when doing AOT compilation.
2677                 
2678         * aot-compiler.c (compile_method): Disable gshared support for now as it
2679         doesn't yet work.
2680
2681 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2682
2683         * mini-amd64.h : Fix a compiler warning.
2684
2685         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
2686           Changed to use a callback function to retrieve the unwind info.
2687           This avoids problems observed when code blocks were removed by
2688           unloading an app domain.
2689
2690         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
2691           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
2692           to work properly.
2693
2694         Contributed under MIT/X11 license.
2695
2696 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2697
2698         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
2699           case to keep the stack aligned to 8.
2700
2701         Contributed under MIT/X11 license.
2702
2703 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
2704
2705         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
2706         avoid repeated linear searches.
2707
2708 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
2709
2710         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
2711         methods it can't handle.
2712         
2713         * aot-compiler.c (add_method): Avoid adding a method twice.
2714         (add_wrappers): Add runtime invoke wrappers for all methods.
2715
2716         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
2717         function to create an aot-compatible version of this trampoline.
2718
2719         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
2720
2721 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
2722
2723         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
2724
2725         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
2726         with a generic sharing failure.
2727
2728         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
2729
2730         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
2731         CEE_RETHROW. Fixes #419634.
2732
2733         * mini.c (mono_method_to_ir): Ditto.
2734
2735         * exceptions.cs: Add a new test.
2736         
2737         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
2738         to mono_type_stack_size_internal () since some callers might not pass in
2739         an rgctx.
2740
2741         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
2742         instrument_prolog. Fixes #419878.
2743
2744         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
2745         doubles in soft float mode volatile.
2746
2747 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
2748
2749         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
2750
2751         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
2752         to handle soft float correctly.
2753
2754         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
2755         the fast path.
2756
2757         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
2758
2759         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
2760         to sp, since the generics catch code requires it.
2761
2762         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
2763         copying.
2764
2765         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
2766         mono_arch_emit_imt_argument ().
2767
2768         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
2769
2770         * mini-arm.c tramp-arm.c: Generic sharing updates.
2771
2772 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
2773
2774         * mini-arm.c: Fix the arm build.
2775
2776         * generic-sharing.c (mini_type_get_underlying_type): New helper function
2777         handling enums, generic instances and generic sharing.
2778         (mini_type_stack_size_full): Ditto.
2779
2780         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
2781         
2782         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
2783
2784         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
2785
2786         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
2787         trampolines.
2788
2789         * mini-arm.c: Various small generic sharing changes.
2790
2791         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
2792         this for x86.
2793         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
2794         custom code.
2795
2796         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
2797         helper function to return a generic class init trampoline.
2798
2799         * method-to-ir.c mini.c: Use it.
2800         
2801         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
2802         arch-specfic function to return a generic class init trampoline.
2803
2804         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
2805         the GENERIC_CLASS_INIT custom code.
2806
2807         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
2808         a fatal error, not a sharing failure.
2809
2810         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
2811         needed.
2812
2813         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
2814         trampoline argument from MONO_ARCH_VTABLE_REG.
2815
2816         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2817         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2818         argument, and pass the vtable in VTABLE_REG.
2819
2820         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2821         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2822         argument, and pass the vtable in VTABLE_REG.
2823         (mono_arch_create_trampoline_code_full): Remove some special casing for
2824         the rgctx fetch trampoline.
2825
2826         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
2827         Fixes #419273.
2828
2829         * iltests.il: Add a test for it.
2830
2831 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
2832
2833         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
2834
2835         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
2836         no longer needed.
2837
2838         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
2839         use mono_jit_info_table_find () to avoid recursion.
2840         (mono_delegate_trampoline): Add a sync wrapper here.
2841
2842         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
2843         here.
2844
2845         * mini.c (mono_method_to_ir): Ditto.
2846         
2847         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
2848         add_sync_wrapper argument. Don't add a sync wrapper here.
2849         (mono_create_jump_trampoline): Don't add a sync wrapper here.
2850
2851         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
2852         
2853 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2854
2855         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
2856           of nonvolatile registers back from MonoContext to CONTEXT.
2857
2858         Contributed under MIT/X11 license.
2859
2860 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2861
2862         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
2863           arguments on Winx64 there are only 4 argument registers.  For this
2864           logic to work the last argument must be pulled from the stack.  
2865
2866         Contributed under MIT/X11 license.
2867
2868 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
2869
2870         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2871
2872         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
2873         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
2874         encode/decode_method_ref ().
2875
2876         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
2877
2878         * aot-runtime.c (decode_patch): Ditto.  
2879
2880         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
2881         MONO_PATCH_INFO_METHOD.
2882
2883         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
2884         MonoGenericJitInfo.
2885
2886         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
2887         MonoGenericJitInfo.
2888
2889         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
2890
2891         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
2892         one from the caller.
2893
2894         * aot-runtime.c (decode_generic_inst): New function to decode and
2895         return a interned generic inst.
2896         (decode_klass_ref): Use it.
2897         (decode_method_ref): Ditto.
2898
2899         * aot-compiler.c (emit_exception_debug_info): Save 
2900         jinfo->has_generic_jit_info too.
2901
2902 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2903
2904         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
2905
2906         * iltests.il.in: Add a test for fconv_to_i.
2907
2908         * liveness.c: Disable the liveness2 pass for now to save space.
2909
2910         * regalloc2.c: Include mempool-internals.h to fix warnings.
2911
2912         * aot-compiler.c (encode_method_ref): Encode the context of generic
2913         instance methods.
2914
2915         * aot-runtime.c (decode_method_ref): Inflate generic methods using
2916         the context saved in the aot file.
2917
2918         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2919
2920         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2921
2922         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
2923         volatile so they won't be optimized away.
2924
2925 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2926
2927         * ssa.c:
2928         * ssa2.c:
2929         * mini.c:
2930         * regalloc2.c:
2931         * dominators.c: Remove duplicated functions that now are in
2932         mempool-internals.h.
2933
2934 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2935
2936         * aot-compiler.c: Fix warnings.
2937
2938         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
2939
2940         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
2941
2942         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
2943         as the patch type.
2944
2945         * mini.c (mono_resolve_patch_target): Ditto.
2946         
2947         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
2948         (encode_klass_ref): Add support for encoding VARs/MVARs.
2949
2950         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
2951
2952         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
2953         the handling of the got entries into a separate 'decode_got_entry' function.
2954         Add support for RGCTX_FETCH.
2955
2956         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
2957         clobbered by the trampoline code.
2958
2959         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
2960         not clobbered by the indirect calling code.
2961
2962 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2963
2964         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
2965         to fix the build.
2966
2967 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2968
2969         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
2970         signature using the compilation mempool otherwise we would leak it.
2971
2972 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2973
2974         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
2975         mono_emit_abs_call ().
2976
2977         * patch-info.h: Add GENERIC_CLASS_INIT.
2978
2979         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
2980
2981         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
2982         as their target as a near call.
2983
2984         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
2985         ABS handling code.
2986         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
2987
2988         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
2989         call to a runtime function described by a patch.
2990
2991         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
2992         mono_emit_abs_call, this has the advantage that the ABS handling code in
2993         mono_codegen () can handle them both, and can handle other stuff in the
2994         future without additional code.
2995
2996         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
2997         entry.
2998         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
2999         abs addresses.
3000
3001         * mini.h: Add missing bblock related prototypes.
3002
3003         * mini.h (MonoCompile): Remove unused reverse_inst_list and
3004         reverse_inst_list_len fields.
3005
3006         * mini.c: Refactor this file a bit by moving branch optimizations to 
3007         branch-opts.c.
3008
3009         * method-to-ir.c: Merge generic sharing changes missed earlier.
3010
3011         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
3012
3013         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
3014         shared patches. Process METHODCONST as a shared patch.
3015
3016         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
3017         as it crashes on the 2.0 mscorlib.
3018
3019         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
3020         to cause crashes.
3021         
3022         * aot-compiler.c: Use is_plt_patch () in a few additional places.
3023         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
3024         by IMT.
3025
3026         * aot-compiler.c: Reorganize the got handling code to be a bit more
3027         understandable.
3028
3029 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
3030
3031         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
3032         mono_patch_info_equals/hash, and use it to massively simplify
3033         get_plt_index ().
3034
3035         * mini.c (mono_patch_info_hash): Simplify this and add support for
3036         more patch types.
3037
3038         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
3039
3040         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
3041         handling code, since an offset is not enough to identify a trampoline.
3042
3043         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
3044
3045 2008-08-17  Mark Probst  <mark.probst@gmail.com>
3046
3047         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
3048
3049         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
3050
3051         * mini-ops.h: Argument and result types for OVF_CARRY ops.
3052
3053         * decompose.c: PPC decompositions for various ops.
3054
3055         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
3056
3057 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
3058
3059         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
3060         call the generic trampoline code using a call, instead of a jump, to
3061         remove some special casing from the generic trampoline code.
3062
3063         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
3064         (mono_codegen): Ditto.
3065
3066         * aot-compiler.c aot-runtime.c: Ditto.
3067
3068         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
3069
3070         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
3071         helper function to find the offset corresponding to a lazy fetch trampoline.
3072
3073         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
3074         when doing generic sharing.
3075
3076         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
3077         places.
3078         
3079         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
3080         mini-trampolines.c to be with the other trampoline creation functions.
3081
3082         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
3083         as it is equal to method->signature in most cases, add a 
3084         mono_emit_method_call_full variant which takes a signature and an imt
3085         argument as well.
3086
3087 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
3088
3089         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
3090         to this function, since it could be computed easily from the method 
3091         argument.
3092         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
3093         more.
3094
3095         * method-to-ir.c mini.c: Remove references to 
3096         compile_generic_method_wo_context.
3097
3098         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
3099         generic method calls.
3100         
3101         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
3102         dimensional non-szarrays.
3103
3104         * mini.c (mini_init): Register mono_array_new_1.
3105
3106         * jit-icalls.c (mono_array_new_1): New jit icall.
3107
3108         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
3109         pointing to the method.
3110
3111         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
3112         method addresses belonging to METHOD_JUMP patches in the 
3113         jump_target_got_slot_hash.
3114         (mono_aot_load_method): Ditto.
3115
3116         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
3117         METHOD_JUMP patches.
3118
3119         * mini.c (mini_create_jit_domain_info): New helper function which 
3120         initializes/frees domain->runtime_info.
3121         (mini_free_jit_domain_info): Ditto.
3122         (mini_init): Install the domain hook functions with the runtime.
3123
3124         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
3125         information maintained by the JIT.
3126
3127         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
3128         insertion into jump_table_hash into mono_codegen (), also implement proper
3129         locking.
3130
3131         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
3132         tail calls, it is already done by the aot code.
3133         
3134         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
3135         mechanism on amd64.
3136
3137         * iltests.il.in: Make the jmp test a bit more complex.
3138
3139         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
3140         generic instances which doesn't have a token.
3141
3142         * aot-runtime.c (decode_method_ref): Ditto.
3143         
3144         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
3145         can handle this case now.
3146         (handle_box): Ditto.
3147
3148 2008-08-15  Geoff Norton  <gnorton@novell.com>
3149
3150         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
3151         debugging check.
3152
3153 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
3154
3155         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
3156         calling generic methods.
3157
3158         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
3159
3160         * aot-runtime.c (decode_patch_info): Ditto.
3161
3162         * mini.c (mono_resolve_patch_target): Ditto.
3163         
3164         * patch-info.h: Add METHOD_RGCTX.
3165
3166         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
3167
3168 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
3169
3170         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
3171         arguments in registers.
3172
3173         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
3174         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
3175
3176         * mini.c (mini_method_compile): Abort aot compilation for generic
3177         methods if generic sharing is disabled.
3178         
3179         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
3180         an mrgctx.
3181
3182         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
3183         requiring an mrgctx.
3184
3185         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
3186         store instructions when converting a vcall to a normal call.
3187
3188         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
3189         mono_arch_find_jit_info.
3190
3191 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
3192
3193         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
3194         avoid calling mono_method_full_name () for every method even if the
3195         env var is not set.
3196         (check_inline_caller_method_name_limit): Ditto.
3197
3198 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
3199
3200         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
3201         assemblies in one run.
3202
3203         * aot-compiler.c (mono_compile_assembly): Only print out a count of
3204         skipped methods if it is not 0.
3205
3206         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
3207
3208 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
3209
3210         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
3211           MONO_ARCH_HAVE_UNWIND_TABLE.
3212
3213         Contributed under MIT/X11 license.
3214
3215 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
3216
3217         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
3218           from default optimizaton list on Winx64.
3219
3220         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
3221
3222         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
3223           the LMF from the MonoJitTlsData structure.
3224
3225         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
3226
3227         Contributed under MIT/X11 license.
3228
3229 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
3230
3231         * mini.c (sigsegv_signal_handler): Fix the build.
3232
3233         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
3234         assembly->aot_module.
3235
3236         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
3237         hash table. This simplifies and speeds up a lot of code, and fixes support
3238         for .netmodules.
3239
3240         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
3241         with the runtime.
3242
3243         * mini-exceptions.c: Ditto.
3244         
3245         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
3246         'native_offset' argument, since these are computed in the 
3247         mono_find_jit_info () function.
3248
3249         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
3250         is used by exceptions-ppc.c.
3251
3252         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
3253         mono_arch_find_jit_info ().
3254         
3255         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
3256         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
3257         generic code in mini-exceptions.c.
3258
3259 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
3260
3261         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
3262
3263         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
3264         
3265         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
3266         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
3267         called while holding the loader lock. Fixes #415608.
3268         (mono_aot_get_method_from_token_inner): Ditto.
3269
3270 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3271
3272         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
3273         to reduce differences between this and the generic implementation in
3274         mini-exceptions.c.
3275         (ves_icall_get_frame_info): Ditto.
3276
3277         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
3278
3279         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
3280         longer neccesarry.
3281
3282         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
3283         mono_arch_get_call_filter () and make it non-static, for consistency with the
3284         other architectures.
3285
3286 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
3287
3288         * mini.c:
3289         * local-propagation.c:
3290         * mini-x86.c: Correct the name of arch defines.
3291
3292 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3293
3294         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
3295         NO_EMULATE_LONG_SHIFT_OPS define.
3296
3297 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
3298
3299         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
3300         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
3301
3302         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
3303         MACH fixes. Merged from the 2.0 branch.
3304
3305         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
3306
3307         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
3308         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
3309
3310         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
3311
3312         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
3313         mono_marshal_get_native_wrapper () signature changes.
3314
3315 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3316
3317         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
3318         conversion bug under arm.
3319
3320 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
3321
3322         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
3323
3324         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
3325         with overflow checking.
3326
3327 2008-08-05  Marek Habersack  <mhabersack@novell.com>
3328
3329         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
3330         to the genmdesc.pl file
3331
3332 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
3333
3334         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
3335         arg_array in the soft-float versions of the LOAD/STORE macros.
3336
3337         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
3338         implementation.
3339
3340         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
3341
3342 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3343
3344         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
3345         a float HFA. Fixes #413621.
3346
3347 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
3348
3349         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
3350         frame_size to args_size. Fixes build.
3351
3352 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3353
3354         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
3355         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
3356
3357         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
3358         the stack are not unaligned. Fixes #413247.
3359         
3360 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3361
3362         * mini.c: update jitted methods performance counters.
3363
3364 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
3365
3366         * mini-exceptions.c: increase the exceptions thrown performance
3367         counter in mono_handle_exception ().
3368
3369 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
3370
3371         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
3372         can work with netmodules.
3373
3374 2008-07-28  Geoff Norton  <gnorton@novell.com>
3375
3376         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
3377         regression tests.
3378
3379 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3380
3381         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
3382         correct place.
3383
3384 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
3385
3386         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3387           The float param registers and other param registers must be the 
3388           same index on Windows x64.
3389
3390         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
3391           ArgValuetypeAddrInIReg argument case.  Setting the argument
3392           op to OP_VTARG_ADDR (OP_REGOFFSET)).
3393
3394         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
3395           variable computed above as the copy length for arguments of storage
3396           type ArgValuetypeAddrInIReg.
3397
3398         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
3399           ArgValuetypeAddrInIReg argument case.  This case will rely on
3400           mono_arch_emit_outarg_vt to emit the correct code later in the process.
3401
3402         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
3403           a 32 byte stack allocation for all calls.  We will omit the adjustment for
3404           jump and tail call instructoins as they do not follow the typical call behavior.
3405
3406         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
3407           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
3408           local variable and pass the local variable by reference to the called method.
3409
3410         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
3411           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
3412           of a struct is passed in a register it must be saved with the other
3413           volatile argument on the stack.
3414
3415         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
3416           frame pointer the stack adjustment value must be saved to the unwind 
3417           info structure.
3418
3419         Contributed under MIT/X11 license.
3420
3421 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3422
3423         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
3424         which got lost in the merge.
3425
3426 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3427
3428         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
3429         build.
3430
3431         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
3432         
3433         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
3434         icalls, since they won't be patched.
3435
3436         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
3437         different code sequence when running under valgrind to prevent some valgrind
3438         errors.
3439
3440         * iltests.il.in: Add new regression test.
3441
3442         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
3443         end with a throw.
3444
3445         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
3446         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
3447
3448         * iltests.il.in: Add new test.
3449
3450         * aot-compiler.c: Fix some warnings.
3451
3452         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
3453         Fixes #412494.
3454
3455 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3456
3457         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
3458         (mini_usage_jitdeveloper): Add a missing --wapi option.
3459
3460 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3461
3462         * mini-codegen.c: Simplify the is_fp macros.
3463         (free_up_ireg): Remove, use free_up_reg instead.
3464         (free_up_reg): Fix the fp case.
3465
3466 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3467
3468         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
3469         lowered earlier.
3470
3471         * exceptions-x86.c: Merge some changes which seemed to have got lost
3472         in the linear-ir merge.
3473
3474         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
3475
3476         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
3477         long vreg volatile even if the variable was already created.
3478
3479         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
3480         volatile variables.
3481
3482 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3483
3484         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
3485
3486         * mini.c (mono_jit_compile_method_inner): Add support for 
3487         MONO_EXCEPTION_BAD_IMAGE.
3488
3489         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
3490         mini_method_get_context () returns NULL. Fixes #356531.
3491
3492         * mini.c (mono_method_to_ir): Ditto.
3493         
3494         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
3495         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
3496
3497 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3498
3499         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
3500         in the LDFTN implementation.
3501
3502 2008-07-25  Mark Probst  <mark.probst@gmail.com>
3503
3504         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
3505         code, patch calls to icalls, too, even if they're not in the
3506         shared generic code hash.  Fixes #411962.
3507
3508 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3509
3510         * cpu-x86.md: Increase the length of the fcall opcodes.
3511
3512         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
3513         calls returning floats.
3514
3515         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
3516         on NEWARR.
3517         
3518         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
3519         missed earlier.
3520
3521         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
3522         into the domain->method_code_hash.
3523
3524         * aot-compiler.c: Fix win32 build.
3525
3526         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
3527         
3528         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
3529         gshared NEWARR implementation.
3530
3531         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
3532
3533         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
3534         can be used outside of method_to_ir.
3535
3536         * mini.h (MonoCompile): Add arg_types field.
3537
3538         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
3539         
3540         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
3541         the values of the local arg_array and param_types array.
3542
3543 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3544
3545         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
3546         got accesses might only get generated later when NEWOBJ is decomposed.
3547         
3548         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
3549         looking up the native code of the target method when a delegate is called
3550         for the first time.
3551
3552         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
3553         optimization.
3554
3555         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
3556
3557         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
3558         AOT work on platforms without a working dlsym implementation.
3559
3560         * mini.h: Bump AOT image format version.
3561         
3562 2008-07-24  Mark Probst  <mark.probst@gmail.com>
3563
3564         * mini-exceptions.c: Free a MonoType with
3565         mono_metadata_free_type() instead of g_free().
3566
3567         * aot-runtime.c: Free a MonoType.
3568
3569 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3570
3571         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
3572         optimization.
3573
3574         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
3575         fp stack on x86.
3576
3577 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
3578         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
3579         profiler hook.
3580
3581 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3582
3583         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
3584         NEWOBJ calls on valuetypes.
3585
3586         * iltests.il.in: Add new test.
3587
3588         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
3589
3590 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3591
3592         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
3593         is no longer needed.
3594
3595         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
3596         non register sized integer arguments.
3597         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
3598         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
3599         emit_memcpy2 ().
3600
3601         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
3602         CEE_MONO_RETOBJ.
3603         
3604         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
3605         two a binop with different sized arguments is emitted.
3606
3607         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
3608         instruction in the ins==NULL case.
3609
3610 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3611
3612         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
3613
3614         * mini-x86.c: Fix osx build.
3615
3616         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
3617         opcodes as well.
3618
3619         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
3620         instruction for non int sized variables.
3621
3622         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
3623         implementation.
3624
3625 2008-07-23  Robert Jordan  <robertj@gmx.net>
3626
3627         * method-to-ir.c: Fix MSVC build.
3628
3629 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3630
3631         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
3632         a non int sized type, widen it to an int since newer versions of gcc seem to
3633         generate code which needs this.
3634
3635         * ssa2.c abcremoval2.c: Fix warnings.
3636
3637         * *: Merge the Linear IR branch.
3638
3639         The original branch is at trunk/branches/vargaz/mini-linear-il, and
3640         the ChangeLog file there describes all the changes done over the years. 
3641         Further documentation can be found at www.mono-project.com/Linear_IL.
3642
3643 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3644
3645         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3646           The float param registers and other param registers must be the 
3647           same index on Windows x64.
3648
3649         Contributed under MIT/X11 license.
3650
3651 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
3652
3653         * mini.c: Make the previous fix GC safe.
3654
3655 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
3656
3657         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
3658
3659 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3660
3661         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
3662           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
3663           ArgValuetypeAddrInIReg instead.
3664
3665         Contributed under MIT/X11 license.
3666
3667 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
3668
3669         * mini-codegen.c (get_register_spilling): Fix a warning.
3670
3671 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
3672
3673         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
3674         for types which the initialization fails. Raises the provided exception
3675         at the right stop after cleanup.
3676
3677 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
3678
3679         * aot-compiler.c: Free most of the memory allocated during compilation.
3680
3681         * mini.c (mini_parse_debug_options): Fix a leak.
3682         
3683         * mini.c (mini_method_compile): Don't add the method to the jit info tables
3684         during aot compilation.
3685
3686 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
3687
3688         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
3689         it has too much register pressure.
3690
3691 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
3692
3693         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
3694
3695 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3696
3697         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3698         on x86.
3699
3700         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3701         on amd64 similar to the way it is done on arm.
3702
3703         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3704
3705         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
3706         consistency, normalize error messages, avoid loading aot-only modules in
3707         normal mode.
3708
3709         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
3710         for consistency.
3711
3712         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
3713
3714 2008-07-11  Martin Baulig  <martin@ximian.com>
3715
3716         * debug-debugger.h
3717         (MonoDebuggerInfo): Add `interruption_request'.
3718
3719 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3720
3721         * aot-compiler.c (emit_plt): Remove some dead code.
3722
3723         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
3724
3725         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
3726         return the plt info offset belonging to a given plt entry.
3727
3728         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
3729         mono_aot_get_plt_info_offset.
3730         
3731         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
3732         similar to the amd64 code by makeing jumps through a separate jump table 
3733         instead of embedding the jump addresses into the code.
3734
3735 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
3736
3737         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
3738         method.
3739
3740 2008-07-10  Martin Baulig  <martin@ximian.com>
3741
3742         * mini.c (mini_method_compile): Disable generics sharing when
3743         running in the debugger.
3744
3745 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3746
3747         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
3748
3749         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
3750         the local register allocator from running out of registers on x86 when 
3751         using aot.
3752
3753 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
3754
3755         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
3756         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
3757         C4146.
3758
3759         Contributed under MIT/X11 license.
3760
3761 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3762
3763         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
3764         speed up the assembler.
3765
3766 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3767
3768         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
3769         support.
3770
3771         * mini.c: Move the soft float handling macros a bit earlier, add 
3772         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
3773         place.
3774
3775         * mini.h: Add prototype for mono_arch_fixup_jinfo.
3776
3777         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
3778         read-only to help catch code allocation requests.
3779         
3780         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
3781         and turn it off when using --aot-only or when compiling with --aot=full.
3782
3783         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
3784         jump table for switches from the normal domain mempool, not the code
3785         manager.
3786
3787         * mini-trampolines.c (get_unbox_trampoline): New function to return an
3788         unbox trampoline which handles aot-only mode too.
3789
3790         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
3791         an AOTed unbox trampoline.
3792
3793         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
3794
3795 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3796
3797         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
3798         ""
3799
3800         Contributed under MIT/X11 license.
3801
3802 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3803
3804         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
3805           the unwind information for the method at the end of the allocated block.
3806           
3807         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
3808           MonoCompileArch to hold the unwind info for SEH on Winx64
3809         
3810         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
3811           frame pointer info for the method being compiled.
3812           
3813         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
3814           the call to mono_exception_from_token.
3815           
3816         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
3817           storing the method prolog information in a format that the Winx64 SEH can understand.  This
3818           information is stored a the end of the method block because it is all 32-bit offset based.
3819
3820         Contributed under MIT/X11 license.
3821
3822 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3823
3824         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
3825
3826         * wapihandles.c: Fix warnings.
3827
3828         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
3829         mode.
3830
3831         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
3832         mono_jit_compile_method in aot-only mode since that calls the type 
3833         initializer.
3834         
3835         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
3836         get_delegate_invoke_impl in aot-only mode.
3837
3838         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
3839
3840 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
3841
3842         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
3843
3844         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
3845         is on by default.
3846
3847         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
3848
3849         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
3850         init trampoline from the AOT file as well.
3851
3852         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
3853         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
3854         code.
3855
3856         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
3857         mono_init.
3858
3859         * exceptions-amd64.c: Add _full variants for the remaining exception code
3860         creation functions as well, allow emission of relocatable code, remove
3861         caching since that is now done by the caller.
3862
3863         * mini-exceptions.c: Add _full variants for the remaining exception code
3864         creation functions as well, add aot-only support.
3865
3866         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
3867         if we can determine a proper token for them.
3868         (add_wrappers): Add a few more wrappers.
3869         (emit_method_code): Remove some dead code.
3870         (emit_trampolines): Emit exception code too.
3871
3872         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
3873
3874         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
3875         mono_array_new_va which avoids varargs.
3876
3877         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
3878
3879         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
3880         mono_arch_create_specific_trampoline () in all places.
3881
3882         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
3883         a bit so it can be used for other things as well.
3884         
3885         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
3886         on demand as well.
3887
3888         * exceptions-amd64.c: Rename the caching from the exception code creation
3889         functions, it is done by the caller instead.
3890         
3891         * exceptions-amd64.c: Change the signature of the exception code creation 
3892         functions to allow the creation of relocatable code later.
3893
3894         * mini-exceptions.c: Add a set of functions to query the various 
3895         runtime-generated exception functions.
3896
3897         * mini.c mini-exceptions.c: Use the newly added functions instead of the
3898         mono_arch_.. () functions.
3899         
3900 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3901
3902         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
3903
3904         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
3905
3906         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
3907         (mini_get_vtable_trampoline): Ditto.
3908
3909         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
3910         code in the AOT case by returning the code size and a list of relocations to
3911         the caller.
3912
3913         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
3914
3915 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
3916
3917         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
3918           clean the stack.
3919
3920         Contributed under MIT/X11 license.
3921
3922 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3923
3924         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
3925         so the buffer size can be computed correctly. Fixes #404735.
3926
3927         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
3928         normally as cfg->debug_info is already freed.
3929
3930 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
3931
3932         * mini-amd64.c: For calls returning vtypes in registers, don't store
3933         the return address on the stack, instead allocate a separate local for
3934         it. Fixes #404729.
3935
3936 2008-07-05  Mark Probst  <mark.probst@gmail.com>
3937
3938         * mini-trampolines.c, mini.h: Add an argument to
3939         mono_create_jit_trampoline_in_domain() for turning off the adding
3940         of the sync wrapper.
3941
3942         * mini.c: Use the JIT trampoline without sync instead of
3943         ldftn_nosync in static RGCTX invoke wrappers so that the call can
3944         be patched.
3945
3946 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3947
3948         * driver.c: Turn on GSHARED optimization by default.
3949
3950 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
3951
3952         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
3953         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
3954
3955         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
3956         create a variant of the generic trampoline code callable from AOTed trampolines.
3957
3958         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
3959         trampoline code callable from AOTed trampolines.
3960
3961         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
3962
3963 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3964
3965         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
3966         pass-through manner.
3967
3968         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
3969         and don't fail sharing for them anymore.
3970
3971         * mini-exceptions.c: Handle exceptions in shared generic methods.
3972
3973         * generic-sharing.c: When checking the context of a generic
3974         method, also check its class's context.  Don't treat wrappers as
3975         sharable.
3976
3977         * mini-trampolines.c: Some code factored out to
3978         metadata/generic-sharing.c.  Handle the MRGCTX case.
3979
3980         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
3981         we must deal with the method being of another instantiation of the
3982         class.  Add static rgctx invoke wrappers to generic methods.
3983
3984 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3985
3986         * mini.c: Provide all jit infos of generic shared methods with a
3987         generic jit info.
3988
3989         * mini-exceptions.c: Handle the new situation that a generic info
3990         might be available, but not info about the this/vtable/mrgctx
3991         variable.
3992
3993 2008-07-03  Mark Probst  <mark.probst@gmail.com>
3994
3995         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
3996         generic methods.
3997
3998 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
3999
4000         * dominators.c (check_dominance_frontier): Fix a warning.
4001
4002         * mini.h: Add some missing prototypes.
4003
4004         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
4005
4006         * driver.c (mono_jit_init_version): Correct the comments since the first
4007         argument should be the name of the root domain, not a filename.
4008
4009         * aot-runtime.c (make_writable): Error out if this is called while running
4010         with --aot-only.
4011         (load_aot_module): Ditto.
4012
4013         * aot-compiler.c: Really fix the computation of method indexes.
4014
4015         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
4016         optimizations as this is no longer called frequently.
4017
4018         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
4019         method and the invoke impl code and pass it to the delegate trampoline instead of
4020         just the delegate class.
4021
4022 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4023
4024         * aot-compiler.c: Fixup the computation of method indexes.
4025         (add_wrappers): Create the base methods of the runtime invoke wrappers using
4026         the method builder infrastructure.
4027
4028         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
4029         has no header.
4030
4031         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
4032         mode, load the method right away instead of creating a trampoline.
4033
4034         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
4035
4036         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
4037         some checks a bit.
4038
4039 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4040
4041         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
4042         (mono_aot_load_method): Use method_index instead of method->token.
4043
4044         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
4045         can handle icalls etc. properly.
4046
4047         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4048
4049         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
4050
4051         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
4052         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
4053         JIT_ICALL_ADDR patch type.
4054
4055         * patch-info.h: Add JIT_ICALL_ADDR patch type.
4056
4057         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
4058         request flag.
4059         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
4060
4061         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
4062
4063 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4064
4065         * mini.c: Use domain->jit_code_hash_lock for controlling access to
4066         domain->jit_code_hash.
4067
4068 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
4069
4070         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
4071
4072 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
4073
4074         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
4075         get_this_arg_from_call, let it compute it when needed.
4076
4077         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
4078         gsctx from code only when needed.
4079
4080         * mini-trampolines.c (get_generic_context): Rename this to 
4081         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
4082         it can be called by the arch backends.
4083
4084         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
4085
4086 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * driver.c (mono_main): Add experimental --aot-only command line option.
4089
4090         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
4091         set.
4092
4093 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4094
4095         * driver.c (DllMain): Remove mono_module_handle.
4096
4097         Contributed under MIT/X11 license.
4098
4099 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
4100
4101         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
4102         for emitting methods which are not in the source assembly. Detect and report
4103         failure of assembling+linking.
4104         
4105         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
4106
4107         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
4108
4109 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
4110
4111         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
4112
4113 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
4114
4115         * mini.h: Remove some obsolete prototypes.
4116
4117         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
4118
4119 2008-06-24  Mark Probst  <mark.probst@gmail.com>
4120
4121         * mini.c (get_object_generic_inst): Variable-sized arrays are not
4122         supported by Visual Studio, so use alloca().
4123
4124 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
4125
4126         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
4127         Fixes #402585.
4128
4129 2008-06-23  Mark Probst  <mark.probst@gmail.com>
4130
4131         * mini.c: Fail sharing of a generic method if it contains an open
4132         catch clause (because we don't pass MRGCTXs yet).
4133
4134 2008-06-23  Mark Probst  <mark.probst@gmail.com>
4135
4136         * mini.c: When compiling a method with generic sharing, insert the
4137         method instantiated with an all-Object generic context into the
4138         jit info table, instead of the context of the first instantiation
4139         of the method we happen to compile.
4140
4141 2008-06-18  Martin Baulig  <martin@ximian.com>
4142
4143         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
4144         `major_version' and `minor_version'.
4145
4146 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4147
4148         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
4149         mono_method_is_generic_sharable_impl() takes an additional
4150         argument specifying whether to treat type variables as reference
4151         types.
4152
4153 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4154
4155         * mini.h: Removed obsolete prototypes.
4156
4157 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4158
4159         * mini.c: Don't fail generic sharing for initobj and sizeof - we
4160         already handle them.
4161
4162 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4163
4164         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
4165         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
4166         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
4167         tramp-x86.c: Added a MonoGenericContext* argument to
4168         mono_arch_get_unbox_trampoline() so that it can call other
4169         functions which require it.
4170
4171 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4172
4173         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
4174         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
4175         mono_arch_get_this_arg_from_call() takes a
4176         MonoGenericSharingContext* as well.
4177
4178 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4179
4180         * mini.c: Factor out code for emitting unbox into emit_unbox() and
4181         implement generic sharing of unbox.
4182
4183 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4184
4185         * mini.c: Don't compute the vtable to determine whether a field is
4186         special static, because it might not work for open types.
4187
4188 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4189
4190         * mini.c: Removed the unused token_type and token_source arguments
4191         from get_runtime_generic_context_ptr().
4192
4193 2008-06-17  Marek Habersack  <mhabersack@novell.com>
4194
4195         * mini.c (ADD_BINOP): fix the build
4196
4197 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
4198
4199         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
4200         a widening op.
4201
4202 2008-06-16  Mark Probst  <mark.probst@gmail.com>
4203
4204         * mini.h: Removed class relations enum that's not used anymore.
4205
4206 2008-06-16  Mark Probst  <mark.probst@gmail.com>
4207
4208         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
4209
4210         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
4211         the lazy fetch trampoline access code.
4212
4213 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
4214
4215         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
4216
4217 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
4218
4219         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
4220
4221         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
4222
4223         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
4224
4225 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4226
4227         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
4228         intrinsics.
4229
4230         * mini-ops.h: Add MIN/MAX_UN opcodes.
4231
4232         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
4233         intrinsics.
4234
4235         * basic-math.cs: Add more min/max tests.
4236
4237         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
4238
4239 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4240
4241         * mini.c: Small fix in the prologue of emit_castclass.
4242
4243 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4244
4245         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
4246
4247         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
4248         do not work even for unsigned types. Fixes #400014.
4249
4250         * basic-math.cs: Add regression tests for unsigned Min/Max.
4251
4252 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4253
4254         * mini.c: Added additional context_used argument to several
4255         functions, which will be needed for sharing generic methods.  Use
4256         GET_RGCTX macro wherever appropriate.  Declare only one
4257         context_used in mono_method_to_ir().
4258
4259 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4260
4261         * mini.c, generic-sharing.c: Removed generic class relations.
4262
4263         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
4264         functions due to MRGCTX changes.
4265
4266 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4267
4268         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
4269         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
4270         with calculated IMT.
4271
4272         * mini.c: Generic sharing of calls via generic interfaces.
4273
4274         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
4275         generic method with non-constant MonoGenericContext*.  Instead,
4276         the context is taken out of the method itself.
4277
4278 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4279
4280         * mini.c: Generic sharing of ldvirtftn.
4281
4282 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4283
4284         * mini.c: Generic sharing of ldftn.
4285
4286 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4287
4288         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
4289
4290 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4291
4292         * mini.c: Generic sharing of the special case of ldtoken followed
4293         by a call to GetTypeFromHandle.
4294
4295 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4296
4297         * mini.c: Generic sharing of box for nullable types.
4298
4299 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4300
4301         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
4302         are passed on the stack. Fixes #324807.
4303
4304 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
4305
4306         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
4307         for the ArgValuetypeAddrInIReg case.
4308
4309         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
4310         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
4311
4312         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
4313         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
4314         local variable and pass the local variable by reference to the called method.
4315           
4316         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
4317         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
4318
4319         Contributed under MIT/X11 license.
4320
4321 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
4322
4323         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
4324
4325         * debug-mini.c (mono_debug_print_vars): Release memory after printing
4326         everything.
4327
4328 2008-06-10  Martin Baulig  <martin@ximian.com>
4329
4330         * debug-mini.c
4331         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
4332
4333 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
4334
4335         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
4336         possible error when no arguments are passed.
4337
4338         Contributed under MIT/X11 license.
4339
4340 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
4341
4342         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
4343         where the file name is NULL.
4344
4345 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
4346
4347         * mini.c: Fix s390 build.
4348
4349 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
4350
4351         * trace.c (mono_trace_parse_options): Fix warnings.
4352
4353         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
4354
4355 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
4356
4357         * mini.c (remove_block_if_useless): Avoid printing the method name.
4358         
4359         * mini.c: Remove needless setting of ins->cil_code which is now done by 
4360         MONO_INST_NEW.
4361
4362         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
4363         LMF. Not yet used.
4364
4365         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
4366         translated code after it has been patched.
4367
4368 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
4369
4370         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
4371         avoid problems during code patching on SMP systems.
4372         (emit_call): Avoid adding a patch info which is already added by 
4373         emit_call_body.
4374         (mono_arch_emit_exceptions): Ditto.
4375
4376 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
4377
4378         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
4379         MONO_TYPE_ISSTRUCT already checks for it.
4380
4381 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
4382
4383         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
4384           structs with floats on Winx64 the float registers are not used.  
4385           The integer registers are always used..
4386         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
4387           only one register will be used and only if the size of the struct 
4388           is 1,2,4, or 8 bytes.
4389
4390         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
4391           to work for Winx64.
4392
4393         Contributed under MIT/X11 license.
4394
4395 2008-06-05  Martin Baulig  <martin@ximian.com>
4396
4397         * debug-debugger.c (debugger_lookup_class): Also call
4398         mono_class_setup_methods() here; we're only called from RTI.
4399
4400 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
4401
4402         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
4403         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
4404         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
4405         Post-process object files and add dtrace-generated object, if necessary.
4406
4407         Contributed under MIT/X11 license.
4408
4409 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4410
4411         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
4412         element class.
4413
4414         * mini.c: Generic sharing for unbox.any and castclass.
4415
4416 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4417
4418         * mini.c: Ignore tailcall prefix in shared generic code and when
4419         doing calls which require a vtable/rgctx argument.
4420
4421 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4422
4423         * mini.c: Don't free the JIT info.
4424
4425         * driver.c: Changes in the JIT info table testing code.
4426
4427 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
4428
4429         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
4430         interruption. Fix some warnings.
4431
4432         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
4433         interruption_checkpoint.
4434
4435 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
4436
4437         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
4438         from embedding applications.
4439
4440 2008-06-02  William Holmes  <billholmes54@gmail.com>
4441
4442         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
4443           reserving 32 bytes on the stack when making calls. 
4444
4445         Contributed under MIT/X11 license.
4446
4447 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
4448
4449         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
4450         the linear IL branch.
4451
4452         * driver.c: Print out more information for --version on arm.
4453
4454 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
4455
4456         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
4457         bb_exit instead, since out of line bblocks might not actually be emitted
4458         out-of-line.
4459         
4460         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
4461         maximum epilog size for out of line bblocks if tracing is enabled.
4462
4463         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
4464
4465 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
4466
4467         * arrays.cs: Regression tests for allocating arrays with negative sizes.
4468
4469 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
4470
4471         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
4472         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
4473         opcodes.
4474
4475 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
4476
4477         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
4478         the 'value' to store is a constant.
4479
4480         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
4481
4482         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
4483         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
4484
4485 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
4486
4487         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
4488         for accessing method->generic_container.
4489
4490 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
4491
4492         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
4493         
4494         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
4495
4496         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
4497
4498         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
4499         fails.
4500
4501 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
4502
4503         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
4504
4505         * mini.c: Handle the case when mono_class_vtable () fails.
4506
4507 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
4508         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
4509         the stat profiler.
4510
4511 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4512
4513         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
4514         together with domain sharing.
4515
4516 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4517
4518         * mini.c: Treat callvirts to final methods like non-virtual calls
4519         when doing generic sharing, i.e. look them up in the runtime
4520         generic context.
4521
4522 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4523
4524         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
4525         with computed types (for generic sharing).
4526
4527         * mini.c: Generic sharing for mkrefany and refanyval.
4528
4529 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
4530
4531         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
4532         possible.
4533
4534         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
4535         the generic sharing code.
4536         
4537         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
4538         when needed.
4539
4540 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4541
4542         * mini.h: Remove the declaration of mono_aot_init_vtable ().
4543
4544 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
4545
4546         * driver.c: updated copyright date
4547
4548 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4549
4550         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
4551         needed.
4552
4553 2008-05-19  Martin Baulig  <martin@ximian.com>
4554
4555         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
4556         pointing to the new `_mono_debug_using_mono_debugger' variable.
4557
4558         * driver.c
4559         (mono_main): Check mono_debug_using_mono_debugger() rather than
4560         the `MONO_INSIDE_MDB' environment variable to check whether we're
4561         inside the debugger.
4562
4563 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
4564
4565         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
4566         argument.
4567
4568 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4569
4570         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
4571
4572         * mini.c: Added mini_assembly_can_skip_verification. This
4573         function checks if the assembly requested to skip verification. 
4574         Fixes part of #387274.
4575
4576 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
4577
4578         * mini.c (mini_get_method): Disable the check for open generic classes when
4579         using generic sharing.
4580
4581         * generics.cs: Add a test for #387034.
4582
4583         * mini.c (mini_get_method): Check whenever the method class is an open generic
4584         type, and return NULL in that case, causing a verification error. Fixes
4585         #384123.
4586
4587 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4588
4589         * driver.c (mono_main): Revert r102623. The right
4590         thing to do is to enable the verifier under verifiable
4591         unless a --security flag was passed.
4592
4593         We need this non-trivial behavior for --verify-all otherwise
4594         mcs-compileall won't be able to use it. As it needs everything to
4595         be verified under validil.
4596
4597 2008-05-06  Martin Baulig  <martin@ximian.com>
4598
4599         Fix #383749.
4600
4601         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
4602         (mono_debugger_thread_cleanup): Likewise.
4603         (mono_debugger_extended_notification): Likewise.
4604
4605 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4606
4607         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
4608         against both inflated and non-inflated methods. We need to check against the
4609         generic definition for cases where the instantiated method is not visible.
4610         We need to check against the inflated types for cases where the instantiation
4611         changes any super type. This fixes #382986.
4612
4613         Note that this doesn't need to be applied to other parts of mono_method_to_ir
4614         that check for visibiliy as generic params only appears as the type subject
4615         of tokens on call opcodes. Field manipulation and ldftn must always
4616         target an exact type.
4617
4618 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4619
4620         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
4621         if no related --security flag is passed.
4622
4623 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4624
4625         * mini-arch.h: Prepare support for ppc64.
4626
4627         Contributed under MIT/X11 license.
4628
4629 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4630
4631         * aot-runtime.c: Prepare support for ppc64.
4632
4633         Contributed under MIT/X11 license.
4634
4635 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4636
4637         * mini-ops.h: Prepare support for ppc64.
4638
4639         Contributed under MIT/X11 license.
4640
4641 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
4642
4643         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
4644
4645         Contributed under MIT/X11 license.
4646
4647 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
4648
4649         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
4650         assemblies, since aot_name is not a full path, causing us to load MS.NET 
4651         assemblies on windows.
4652
4653 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
4654
4655         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
4656         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
4657         * main.c: Use UTF-8 encoded command line instead of Windows default code
4658         page on Windows to support Unicode.
4659         * driver.c (DllMain): New function for mixed-mode assembly support.
4660         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
4661         export __stdcall functions without decoration.
4662
4663         Contributed under MIT/X11 license.
4664
4665 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4666
4667         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
4668         saving it very early.
4669
4670 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4671
4672         * mini.h, mini.c: Lots of code for accessing the old RGCTX
4673         deleted.  The only way to access the new RGCTX is via the
4674         trampline.
4675
4676         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
4677         vtable instead of the RGCTX to static methods.
4678
4679         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
4680         accessing the new RGCTX.
4681
4682         * generic-sharing.c: There is no separation between self, type
4683         arguments and other types in the RGCTX anymore.
4684
4685 2008-04-25  Jonathan Chambers <joncham@gmail.com>
4686
4687         * mini-amd64.c (add_general): Remove previous stack adjustment.
4688         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
4689         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
4690         for 32 bytes of stack space reserved for all calls.
4691         
4692         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
4693         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
4694         adjustment.
4695         
4696         Code contributed under MIT/X11 license.
4697
4698 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
4699
4700         * mini.c (mini_method_verify): Only verify non-inflated methods, check
4701         against the root definition, peeling out method and type instantiations.
4702         Cache verify success results, code that fails verification is still
4703         checked multiple times.
4704
4705 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
4706
4707         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
4708
4709 2008-04-23  Jonathan Chambers <joncham@gmail.com>
4710
4711         * mini-amd64.c (add_general): Always increment stack on Win64.
4712         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
4713         on Win64.
4714         
4715         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
4716         stack based argument handling on Win64.
4717         
4718         Code contributed under MIT/X11 license.
4719
4720 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
4721
4722         * Makefile.am (version.h): Add support for git-svn.
4723
4724 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
4725
4726         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
4727         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
4728         avoiding allocations and libc functions which might deadlock.
4729         
4730         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
4731         'no-gdb-backtrace' option is set.
4732
4733         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
4734
4735         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
4736
4737 2008-04-21  Martin Baulig  <martin@ximian.com>
4738
4739         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
4740         and `get_lmf_addr'; `notification_address' is no longer a pointer.
4741
4742 2008-04-21  Martin Baulig  <martin@ximian.com>
4743
4744         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
4745         `thread_vtable', `event_handler_ptr' and `event_handler'.
4746
4747 2008-04-21  Martin Baulig  <martin@ximian.com>
4748
4749         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
4750         allows delayed initialization of the `executable_code_buffer' when
4751         attaching.
4752
4753 2008-04-21  Martin Baulig  <martin@ximian.com>
4754
4755         * mini.h (mono_debugger_create_notification_function): Removed.
4756         * tramp-*.c (mono_debugger_create_notification_function): Removed.
4757
4758         * mdb-debug-info64.s
4759         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4760
4761         * mdb-debug-info32.s
4762         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4763
4764         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
4765         currently only works on x86 and x86_64, so don't create it on ppc.
4766
4767 2008-04-21  Martin Baulig  <martin@ximian.com>
4768
4769         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
4770
4771         * mini.c
4772         (mini_method_compile): In the fp elimination check, check
4773         `debug_options.mdb_optimizations' in addition to
4774         mono_debug_using_mono_debugger().       
4775
4776         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
4777         disable some JIT optimizations which are only disabled when
4778         running inside the debugger.
4779         Added `--help-debug' option to describe the debugging options.
4780         (parse_debug_options): New static function to parse the `--debug'
4781         options, so we can easily add more stuff in future.
4782
4783 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
4784
4785         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
4786         the method has no body.
4787
4788 2008-04-19  Jonathan Chambers <joncham@gmail.com>
4789
4790         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
4791         assembly is not allowed in MSVC 64-bit compiler. 
4792         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
4793         as we get floating point exceptions everywhere.
4794         
4795         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
4796         correctly align arguments for call to throw_exception.
4797         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
4798         
4799         Code contributed under MIT/X11 license.
4800
4801 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
4802
4803         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
4804
4805 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
4806
4807         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
4808
4809         * mini-amd64.c (NEW_INS): Set cil_code.
4810
4811         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
4812         from mini-amd64.c so all debugger related logic is in one place.
4813
4814         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
4815         later won't have a random ip assigned to them.
4816
4817 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
4818
4819         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
4820         the arch specific function initializes code_size.
4821         (mono_create_delegate_trampoline): Ditto.
4822
4823         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
4824         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
4825         platforms.
4826
4827         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
4828         running under the debugger.
4829
4830         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
4831         debugger.
4832
4833         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
4834         debugger. Also move the disabling of optimizations here from driver.c.
4835         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
4836         debugger.
4837
4838         * mini.h (MonoCompile): Add a few new flags.
4839
4840 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
4841
4842         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
4843         so the cil_code field of created MonoInst's is properly set.
4844         (mini_select_instructions): Ditto.
4845
4846         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
4847         (MONO_INST_NEW_CALL): Ditto.
4848
4849         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
4850         in many places so the ins->cil_code field is properly initialized.
4851
4852         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
4853         place.
4854
4855 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
4856
4857         * mini.c (mini_method_compile): Print a different message when compiling a 
4858         shared method.
4859         
4860         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
4861         > 1.
4862
4863 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4864
4865         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
4866         SSE2 instructions.
4867
4868         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
4869         
4870 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4871
4872         * mini.c (handle_stack_args): Make this return void since its return value was
4873         never used. Also set cfg->unverifiable for invalid IL instead of calling
4874         G_BREAKPOINT ().
4875
4876 2008-04-10  Mark Probst  <mark.probst@gmail.com>
4877
4878         * mini.c: Make sure "this" is live in catch clauses with type
4879         variables in shared generic code.
4880
4881 2008-04-08  Mark Probst  <mark.probst@gmail.com>
4882
4883         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
4884         generic_class_is_reference_type() to ensure the proper behaviour
4885         when sharing generic code and the type in question is a type
4886         argument.
4887
4888 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4889
4890         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
4891         race conditions when printing thread dumps. Fixes #377738.
4892
4893 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
4894         
4895         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
4896         shows up when both MonoInst arguments can cause aliasig.
4897         There is likely no way in the current JIT to trigger this problem, but
4898         it showed up in the development of generics sharing, when in a new
4899         opcode both args of an OP_GROUP can be aliases (addresses of a local).
4900         When the generics sharing code will be committed, its tests will be
4901         valid also for this bug.
4902
4903 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4904
4905         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
4906         PATCH_INFO_METHOD.
4907
4908         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
4909         NULL.
4910
4911 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
4912
4913         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
4914         use a more detailed exception message for InvalidCastException.
4915
4916         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
4917
4918         * driver.c (mono_main): Add --debug=casts option to turn on better 
4919         InvalidCastException message details.
4920
4921         * mini.c (mini_get_debug_options): New helper function to return the address of
4922         the debug_options variable.
4923
4924         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
4925         the jit_tls TLS variable.
4926
4927         * mini.c (mono_jit_tls): New TLS variable.
4928
4929         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
4930         option is used.
4931
4932 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
4933
4934         * mini.h: Removed verifer related stuff. This code was moved to verify.c
4935
4936         * mini.c: Removed verifer related stuff, code moved to verify.c.
4937
4938         * driver.c: Using code from verify.c instead of mini.c.
4939
4940 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
4941
4942         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
4943         longer valid.
4944
4945 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
4946
4947         * mini.c (check_for_method_verify): Enabling verification of
4948         corlib if mono_verify_all is set. Bugs in the verifier preventing that
4949         have been fixed.
4950
4951 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
4952
4953         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
4954         caller saved registers as well.
4955         
4956         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
4957         saved registers as well.
4958
4959 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
4960
4961         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
4962
4963         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
4964         code.
4965
4966 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
4967
4968         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
4969         to get_call_info.
4970         (get_call_info): Take a gsctx argument instead of 'cfg'.
4971
4972 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
4973
4974         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
4975         mono_verify_all is set.
4976
4977         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
4978
4979         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
4980
4981 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
4982
4983         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
4984         an exception.
4985
4986         * driver.c mini.c mini.h: Add a --verify-all development option to test the
4987         verifier and the code generated by the compiler.
4988
4989 2008-03-25  Mark Probst  <mark.probst@gmail.com>
4990
4991         * mini.c: Generic sharing of the non-nullable case of the box
4992         instruction.
4993
4994 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
4995
4996         * inssel.brg: Fix the build.
4997
4998         * iltests.il.in: Add a test for lconv.ovf.u8.un.
4999
5000 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
5001
5002         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
5003         Array:Address. Fixes #372410.
5004
5005         * iltests.il.in: New tests for readonly prefix.
5006
5007 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
5008
5009         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
5010         mini-trampolines.c.
5011
5012         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
5013         mini-exceptions.c.
5014
5015         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
5016         
5017         * mini.c (mono_decompose_op_imm): New helper function.
5018
5019         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
5020         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
5021         return value.
5022
5023         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
5024         mono_arch_output_basic_block. Fix warnings.
5025
5026         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
5027         for now.
5028
5029 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
5030
5031         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
5032         since the extra frame is now detected automatically inside the loop.
5033
5034         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
5035         opts which are now in mono_peephole_ins ().
5036         
5037         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
5038
5039         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
5040         frames and skip duplicate managed-to-native frames. Fixes #367665.
5041
5042         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
5043         opts which are now in mono_peephole_ins ().
5044         (mono_arch_peephole_pass_2): Ditto.
5045
5046         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
5047
5048         * mini-codegen.c (mono_peephole_ins): New helper function containing the
5049         arch independent peephole optimizations.
5050
5051         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
5052         opts which are now in mono_peephole_ins ().
5053
5054         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
5055         
5056         * mini-s390.c (mono_arch_output_basic_block): Fix build.
5057
5058         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
5059         pattern.
5060
5061         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
5062         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
5063         opcode. 
5064
5065 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
5066
5067         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
5068         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
5069         return value.
5070
5071         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
5072         mono_arch_output_basic_block. Fix warnings.
5073
5074 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5075
5076         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
5077         conv.ovf.u.un.
5078
5079 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5080
5081         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
5082         conv.ovf.u.un.
5083
5084         * iltests.il: Add new tests.
5085
5086 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
5087
5088         * mini.c: Removed Windows version macros.
5089
5090 2008-03-20  Mark Probst  <mark.probst@gmail.com>
5091
5092         * generic-sharing.c: Put reflection types in the extensible part
5093         of the runtime generic context.
5094
5095         * mini.c: Generic sharing of the GetTypeHandle special case of the
5096         ldtoken instruction.
5097
5098 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5099
5100         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
5101
5102         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
5103         
5104         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
5105         consistency with the other version on the linear IR branch.
5106
5107         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
5108
5109         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
5110
5111         * iltests.il.in: Add new tests.
5112
5113 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
5114
5115         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
5116
5117         * iltests.il.in: Add new tests.
5118
5119 2008-03-19  Mark Probst  <mark.probst@gmail.com>
5120
5121         * mini.c: Two variables with the same name were declared in
5122         nesting contexts and one wasn't initialized.  Fixed.
5123
5124 2008-03-19  Mark Probst  <mark.probst@gmail.com>
5125
5126         * mini.c: Generic sharing of the initobj instruction.
5127
5128 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
5129
5130         * mini.c: make the test to optimize ldtoken from typeof() more
5131         precise.
5132
5133 2008-03-18  Mark Probst  <mark.probst@gmail.com>
5134
5135         * mini.c: Generic sharing of the initobj instruction for reference
5136         types.
5137
5138 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5139
5140         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
5141         the mono_breakpoint_clean_code() code to perform bound checks.
5142
5143 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
5144
5145         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
5146         mono_arch_patch_callsite() to include the start of the managed method
5147         to be able to perform bound checks.
5148
5149 2008-03-17  Mark Probst  <mark.probst@gmail.com>
5150
5151         * mini.c: Generic sharing for the isinst instruction.
5152
5153 2008-03-17  Mark Probst  <mark.probst@gmail.com>
5154
5155         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
5156         inssel-long32-mips.brg: Added opcodes for doing indirect calls
5157         with the runtime generic context argument.
5158
5159         * mini.c: Share calls to several types of unsharable methods by
5160         putting the address of the method code in the runtime generic
5161         context and doing an indirect call.
5162
5163         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
5164         to switches.
5165
5166 2008-03-16  Mark Probst  <mark.probst@gmail.com>
5167
5168         * generic-sharing.c: Change due to a change in the runtime genric
5169         context API.
5170
5171 2008-03-15  Martin Baulig  <martin@ximian.com>
5172
5173         * tramp-x86.c
5174         (mono_arch_nullify_class_init_trampoline): Add call to
5175         mono_breakpoint_clean_code() to make things work when running
5176         inside the debugger.
5177
5178         * tramp-amd64.c
5179         (mono_arch_nullify_class_init_trampoline): Add call to
5180         mono_breakpoint_clean_code() to make things work when running
5181         inside the debugger.
5182
5183 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5184
5185         * inssel-long.brg (reg): Fix 64 bit build.
5186
5187 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5188
5189         * mini.c, mini.h: Share static generic code by passing it an
5190         implicit argument pointing to the runtime generic context.
5191
5192         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
5193         inssel-long32-mips.brg: New opcodes for calling shared static,
5194         which need to be passed the runtime generic context.
5195
5196         * mini-amd64.c, mini-x86.c: Save the runtime generic context
5197         argument on the stack in the prologue if needed.  New function for
5198         finding the runtime generic context argument from the registers
5199         saved by the trampoline.
5200
5201         * mini-amd64.h, mini-x86.h: Specify which register to use for the
5202         runtime generic context argument.
5203
5204         * tramp-amd64.c: Also restore the register used for the runtime
5205         generic context argument.
5206
5207         * mini-trampoline.c: Resolve shared static calls by consulting the
5208         runtime generic context via the new argument.
5209
5210         * generic-sharing.c: Add an argument to sharability-checking
5211         functions that specifies whether type variables should be treated
5212         as sharable type arguments.
5213
5214         * inssel-x86.brg: Removed a superfluous, buggy rule.
5215
5216         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
5217         to switches.
5218
5219 2008-03-14  Martin Baulig  <martin@ximian.com>
5220
5221         * debug-debugger.c (main_thread_handler): Call
5222         mono_runtime_run_main() without sending any notifications.
5223
5224         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
5225
5226 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5227
5228         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
5229
5230 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5231
5232         * tramp-x86.c: Fixed register restore offsets in the trampoline
5233         code for ECX and EDX.
5234
5235 2008-03-12  Geoff Norton  <gnorton@novell.com>
5236
5237         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
5238         different ucontext_t implementations.
5239         * exceptions-arm.c: Use the above defines to get exceptions working on 
5240         iPhone (based on a patch by Luke Howard lukeh@padl.com)
5241         * mini-arm.c: Implement iPhone icache support (based on a patch by
5242         Luke Howard lukeh@padl.com)
5243
5244 2008-03-12  Mark Probst  <mark.probst@gmail.com>
5245
5246         * mini.c: Enable generic sharing of calls to non-static
5247         non-interface non-generic non-value-type methods.
5248
5249         * mini-trampolines.c: Resolve calls from shared generic code.
5250
5251 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
5252
5253         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
5254
5255         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
5256
5257 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
5258
5259         * mini.c: some fixes for the AOT compiler.
5260
5261 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5262
5263         * cpu-amd64.md: Add clob:1 to some float opcodes.
5264
5265 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
5266
5267         * mini.h: Added MiniVerifierMode enumeration.
5268
5269         * mini.c: Added mini_verifier_set_mode to control
5270         the usage of the new verifier.
5271
5272         * mini.c (mono_method): Integrated the new verifier.
5273
5274         * driver.c: Extended --security option with validil and
5275         verifiable options to activate the new verifier.
5276
5277 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5278
5279         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
5280         optimization to ctors taking 0 or 2 arguments too.
5281
5282         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
5283         a bit.
5284
5285         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
5286
5287         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
5288
5289 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
5290
5291         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
5292         non-aot case as well.
5293
5294         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
5295
5296         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
5297         changes.
5298
5299         * aot-compiler.c (encode_patch): Ditto.
5300
5301         * mini.h (G_MININT32): Fix the definition of this.
5302
5303 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
5304
5305         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
5306
5307         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
5308
5309 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5310
5311         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
5312         methods returning vtypes in registers.
5313         (mono_arch_allocate_vars): Ditto.
5314
5315         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
5316
5317         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
5318
5319         * generics.cs: Add a test from the linear IR branch.
5320
5321         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
5322
5323         * mini.c (inline_method): Cache failed inline attempts.
5324
5325 2008-03-04  Mark Probst  <mark.probst@gmail.com>
5326
5327         * mini.c: For shared methods of generic classes put the location
5328         of "this" into the MonoGenericJitInfo.
5329
5330         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
5331         register out of a MonoContext by register number.  Add the generic
5332         sharing context as an argument to mono_arch_find_this_argument().
5333
5334         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5335         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
5336         for new arch function.
5337
5338         * mini-exception.c: Handle open exception clauses in shared
5339         generic code.
5340
5341         * mini-trampolines.c: Supply additional argument to
5342         mono_arch_find_this_argument().
5343
5344 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5345
5346         * Makefile.am (regtests): Run the bench.exe tests last.
5347
5348 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
5349
5350         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
5351         a bit.
5352
5353 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
5354
5355         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
5356         with MS.
5357
5358         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
5359         
5360         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
5361
5362         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
5363         whose class has no cctor.
5364
5365         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
5366
5367 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
5368
5369         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
5370         unverified.
5371
5372 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
5373
5374         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
5375         to be in sync with the code on the linear IR branch.
5376
5377         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
5378
5379         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
5380
5381 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
5382
5383         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
5384
5385         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
5386
5387         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
5388
5389         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
5390
5391         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
5392         
5393         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
5394         body.
5395
5396 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
5397
5398         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
5399         OP_LOADR4_MEMBASE emission.
5400
5401         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
5402         (mono_spillvar_offset_float): Ditto.
5403
5404         * mini-mips.c (mono_arch_emit_prolog): Ditto.
5405
5406         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
5407         emission.
5408
5409         * basic-long.cs: Add regression tests for them.
5410
5411         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
5412         use.
5413         (mono_arch_allocate_vars): Fix representation of single-precision float
5414         argument.
5415         (mono_arch_output_basic_block): Ditto.
5416
5417         * inssel-mips.brg: Ditto, remove duplicate items.
5418
5419         * mini-mips.c (emit_load_volatile_arguments): New function to handle
5420         arguments of tail calls as on other platforms.
5421         (mono_arch_output_basic_block): Handle tail calls.
5422
5423         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
5424         register.
5425
5426         * objects.cs (test_5_pass_static_struct): Add test for it.
5427
5428         Contributed under MIT/X11 license.
5429
5430 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
5431
5432         * Makefile.am: Use gmcs for compiling the regression tests.
5433
5434         * *.2.cs *.2.il: Rename to *.cs and *.il.
5435
5436 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
5437
5438         * regalloc.h: Make the vassign array smaller.
5439
5440         * mini.c (mini_method_compile): Remove an unused field in cfg.
5441
5442         * mini-codegen.c: Add a bunch of micro optimizations.
5443
5444 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
5445
5446         * regalloc.h: Remove some unused fields.
5447
5448 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
5449
5450         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
5451
5452         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
5453
5454 2008-02-22  Mark Probst  <mark.probst@gmail.com>
5455
5456         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
5457
5458         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
5459         trampoline: Fetch an entry from the runtime generic context.  If
5460         it's NULL, jump to the actual trampoline to fill the runtime
5461         generic context.  Otherwise, return it.
5462
5463         * mini.c: Call the lazy fetch trampoline to get entries out of the
5464         runtime generic context.
5465
5466         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
5467         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
5468         tramp-sparc.c: Stubs for the lazy fetch trampoline.
5469
5470 2008-02-21  Mark Probst  <mark.probst@gmail.com>
5471
5472         * mini.c: Fetch data out of the extensible part of the runtime
5473         generic context instead of calling a helper function.
5474
5475         * generic-sharing.c: Some functions moved into
5476         metadata/generic-sharing.c.  Helper function for fetching other
5477         types now checks and asserts against extensible rgctx (just for
5478         debugging purposes - the helper function isn't called anymore
5479         unless for debugging).
5480
5481 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5482
5483         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
5484         for tail calls up to the point that the tests in iltests.exe run. Also add a
5485         dummy CKFINITE implementation.
5486         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
5487         needed for trampoline LMF frames.
5488
5489         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
5490         trampoline LMF frames.
5491
5492 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
5493
5494         * mini.c (inline_method): clean any pending loader error when inlining fail.
5495         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
5496
5497 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5498
5499         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
5500
5501         * aot-runtime.c (decode_patch_info): Ditto.
5502
5503         * mini.c (mono_resolve_patch_target): Ditto.
5504         
5505         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
5506         icall wrappers.
5507
5508         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
5509         
5510         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
5511         if it references an icall address.
5512
5513 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
5514
5515         * cpu-s390x.md: Remove some more unused opcodes.
5516         
5517         * cpu-s390x.md: Remove some unused opcodes.
5518
5519         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
5520         mono_op_imm_to_op ().
5521
5522         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
5523         instead of a switch statement.
5524         
5525         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
5526         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
5527
5528         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
5529         
5530         * mini-codegen.c: Remove unused mono_regstate2_... functions.
5531
5532         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
5533         -1.
5534
5535 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
5536
5537         * driver.c (mono_main): Improve error reporting when an assembly cannot be
5538         opened. Fixes #362607.
5539
5540         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
5541
5542         * iltests.il.in: Add a test for static methods in interfaces.
5543
5544 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
5545
5546         * genmdesc.c (build_table): Fix a crash on older glib versions.
5547
5548         * cpu-sparc.md: Remove some unused opcodes.
5549         
5550         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
5551         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
5552
5553         * cpu-amd64.md: Remove some unused opcodes.
5554
5555         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
5556         like the other opcodes.
5557
5558 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
5559
5560         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
5561
5562         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
5563
5564         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
5565         variables 'cfg' instead of 'm' for consistency.
5566
5567         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
5568
5569         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
5570         argument holding the vtype return address, to avoid the ambigious use of
5571         cfg->ret for this purpose.
5572
5573         * mini.c (NEW_RETLOADA): Use vret_addr if set.
5574
5575         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
5576         
5577         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
5578         new mono_print_ins () function which only takes one argument.
5579
5580 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
5581
5582         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
5583         macro arguments.
5584
5585 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
5586
5587         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
5588
5589         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
5590
5591         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
5592         opcodes and other small changes.
5593
5594         * mini-ops.h: Add some new opcodes from the linear IR branch.
5595
5596         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
5597
5598         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
5599         opcodes, use the REG_MEMBASE opcodes instead.
5600         
5601         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
5602         opcodes, use the REG_MEMBASE opcodes instead.
5603         
5604         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
5605         linear IR branch.
5606
5607         * mini.c (mono_op_imm_to_op): New helper function.
5608
5609         * mini-ops.h: Add some opcodes from linear IR branch.
5610
5611 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
5612
5613         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
5614         <tsv@solvo.ru>.
5615
5616 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
5617
5618         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
5619         OP_ICONV_TO_R4/R8.
5620
5621         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
5622
5623 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
5624
5625         * aot-compiler.c (emit_method_code): Add an assert.
5626
5627         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
5628         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
5629         methods.
5630
5631 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
5632
5633         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
5634         some load/store opcodes so they are consistent. 
5635         (mono_arch_emit_prolog): Simplify some code.
5636
5637         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
5638
5639         * objects.cs: Add tests for large argument offsets on ARM.
5640
5641         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
5642         stack offsets. Fixes #359651.
5643
5644         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
5645
5646         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
5647
5648         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
5649
5650         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
5651
5652         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
5653
5654         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
5655         rid of CEE_CONV_R_UN.
5656
5657         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
5658
5659 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
5660
5661         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
5662
5663         * mini.c (mono_normalize_opcodes): Add some more opcodes.
5664
5665         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
5666
5667         * cpu-amd64.md: Remove some unused opcodes.
5668
5669         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
5670
5671         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
5672
5673         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
5674         arch specific functions for its parts. Call the peephole pass after local
5675         regalloc so the prolog can compute a more accurate max_offset.
5676         
5677         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
5678         the corresponding OP_I/OP_L opcodes.
5679
5680         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
5681
5682         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
5683
5684 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5685
5686         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
5687         as they are handled in mini.c.
5688
5689         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
5690         
5691         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
5692         case since it is handled in mini.c.
5693
5694         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
5695
5696         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
5697
5698         * *.c: Use the new opcodes in the IR and back end code.
5699
5700         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
5701
5702         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
5703
5704 2008-02-06  Mark Probst  <mark.probst@gmail.com>
5705
5706         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
5707         an assert because it has a race condition.
5708
5709 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5710
5711         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
5712
5713         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
5714
5715         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
5716
5717         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
5718         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
5719
5720 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
5721
5722         * cpu-amd64.md (move): Correct the maximum size of move.
5723
5724 2008-02-05  Mark Probst  <mark.probst@gmail.com>
5725
5726         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
5727         the generic class init trampoline to return quickly if the class
5728         is already inited.
5729
5730 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
5731
5732         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
5733         issues where an 32 bit callsite cannot be patched by a 64 bit address.
5734
5735 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
5736
5737         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
5738         branch.
5739
5740 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
5741
5742         * objects.cs: Add some soft-float tests.
5743
5744         * mini.c: Fix a couple more soft-float issues.
5745
5746         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
5747
5748         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
5749         avoid a REX prefix.
5750
5751 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
5752
5753         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
5754         exception happens while compiling a virtual method.
5755
5756 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
5757
5758         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
5759         
5760         * mini-sparc.c: Fix build.
5761
5762         * mini-sparc.c (get_call_info): Add support for generic sharing.
5763
5764         * mini-exceptions.c: Add a FIXME.
5765
5766 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
5767
5768         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
5769         altstack handling code.
5770
5771         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
5772         
5773         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
5774
5775         * mini-s390.c: Add support for generic sharing.
5776
5777         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5778         Fix CAS on s390.
5779         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5780
5781         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
5782
5783         * mini-s390x.c: Add support for generic sharing.
5784         
5785         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5786         Fix CAS on ia64.
5787         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5788
5789         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
5790         can be used since it takes a 16 bit signed immediate.
5791
5792         * inssel-s390x.brg: Fix OP_SETRET.
5793
5794         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
5795
5796         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
5797
5798         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
5799
5800         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
5801
5802         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
5803         in one place.
5804
5805         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
5806         stuff.
5807
5808         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
5809         of the unused mono_arch_patch_delegate_trampoline stuff.
5810
5811 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
5812
5813         * basic-long.cs: Move the fp related tests to basic-float.cs.
5814
5815         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
5816
5817         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
5818
5819         * basic-calls.cs: Add a test for proper float argument passing.
5820
5821         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
5822         if the context corresponds to an exception received through a signal.
5823
5824         * exceptions.cs: Add a test for nullref handling at the start of a try
5825         clause.
5826
5827         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
5828
5829         * jit-icalls.c (mono_break): New JIT icall.
5830
5831         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
5832
5833         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
5834
5835 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
5836
5837         * cpu-*.md: Get rid of unused opcodes.
5838
5839         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
5840
5841         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
5842         by all platforms.
5843
5844         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
5845         define.
5846
5847         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
5848         the arch independent trampoline code in mini-trampolines.c.
5849
5850         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
5851
5852         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
5853
5854         * mini-s390.h: Remove an unused define.
5855         
5856         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
5857         the arch independent trampoline code in mini-trampolines.c.
5858
5859         * mini-arm.c (mono_arch_emit_prolog): Fix build.
5860
5861 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
5862
5863         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
5864
5865         * mini-s390.c (mono_arch_emit_prolog): Fix build.
5866
5867         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
5868
5869         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
5870
5871         * cpu-amd64.md: Use smaller sizes for int opcodes.
5872
5873         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
5874
5875         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
5876         objects.cs.
5877
5878         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
5879         debugging.
5880
5881         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
5882         instead of though a pointer to save an indirection when accessing elements of
5883         the array.
5884
5885         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
5886         some typos.
5887         (NOT_IMPLEMENTED): New helper macro.
5888         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
5889         of a bb.
5890
5891         * *.c: Use the new helper macro.
5892
5893 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
5894
5895         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
5896
5897 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
5898
5899         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
5900         stack slots.
5901
5902 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
5903
5904         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
5905         profiling is enabled.
5906         
5907         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
5908         the end.
5909         (mono_arch_emit_prolog): Add more first bblock optimizations.
5910
5911         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
5912         in order if possible.
5913         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
5914         bblock, since the arguments are still in their original registers.
5915
5916         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
5917
5918 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
5919
5920         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
5921         as well.
5922
5923         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
5924         offset 0.
5925
5926         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
5927
5928         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
5929         process async exceptions received while in unmanaged code.
5930
5931         * mini.c (mini_init): Install a callback with the runtime which will be called
5932         when a thread receives an async exception while in unmanaged code.
5933
5934         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
5935
5936         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
5937
5938 2008-01-16  Wade Berrier  <wberrier@novell.com>
5939
5940         * cpu-g4.md:
5941         * cpu-arm.md:
5942         * cpu-s390x.md:
5943         fix build
5944
5945 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
5946
5947         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
5948         compilation with sun cc.
5949
5950         * cpu-*.md: Fix the build.
5951
5952         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
5953
5954         * mini-amd64.h: Add some comments to the MonoLMF structure.
5955
5956         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
5957         
5958         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
5959         in the LMF structure if possible. This saves two instructions in the
5960         managed->native wrappers.
5961
5962         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
5963
5964 2008-01-16  Mark Probst  <mark.probst@gmail.com>
5965
5966         * generic-sharing.c: New type argument lookup code which uses the
5967         runtime generic context template.
5968
5969 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
5970
5971         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
5972
5973         * mini-arm.c (add_general): Fix arm eabi parameter passing.
5974         (mono_arch_output_basic_block): Fix localloc implementation.
5975
5976         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
5977
5978         * mini-ia64.c (peephole_pass): Fix ia64 build.
5979
5980         * mini-amd64.c (peephole_pass): Fix a warning.
5981         
5982         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
5983         at a constant offset from sp/fp.
5984
5985         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
5986         instead of obtaining it from *lmf in the managed method case.
5987
5988 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
5989
5990         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
5991
5992 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
5993
5994         * mini.h (MonoInstList): New type.
5995         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
5996         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
5997         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
5998         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
5999         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
6000         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
6001         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
6002         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
6003         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
6004         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
6005         MONO_INST_LIST_FOR_EACH_ENTRY,
6006         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
6007         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
6008         mono_inst_list_first, mono_inst_list_last,
6009         mono_inst_list_next, mono_inst_list_prev): New instruction
6010         list handling interfaces.
6011         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
6012         list head 'ins_list'.
6013         (MonoInst): Replace next pointer with list head 'node'.
6014         (MonoCallInst): Make 'out_args' a MonoInstList.
6015         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
6016         (MonoCompile): Delete reverse_inst_list and
6017         reverse_inst_list_len.
6018         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
6019         mono_arch_lowering_pass, mono_arch_local_regalloc,
6020         mono_arch_output_basic_block, mono_arch_emit_prolog):
6021         Convert to new instruction lists.
6022         (insert_after_ins): Delete.
6023         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
6024         instruction lists.
6025         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
6026         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
6027         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
6028         mono_emulate_opcode, mono_emit_load_got_addr,
6029         inline_method, mono_method_to_ir, mono_print_bb_code,
6030         print_dfn, decompose_pass, nullify_basic_block,
6031         replace_out_block_in_code, remove_block_if_useless,
6032         merge_basic_blocks, move_basic_block_to_end,
6033         try_unsigned_compare, optimize_branches, mono_print_code,
6034         mini_select_instructions, remove_critical_edges): Likewise.
6035         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
6036         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
6037         mono_arch_output_basic_block, mono_arch_emit_prolog):
6038         Likewise.
6039         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
6040         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6041         mono_arch_output_basic_block): Likewise.
6042         (inst_list_prepend, insert_after_ins): Delete.
6043         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
6044         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
6045         instruction lists.
6046         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
6047         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
6048         mono_arch_emit_prolog): Likewise.
6049         * cfold.c (mono_constant_fold): Likewise.
6050         * liveness.c (visit_bb, mono_analyze_liveness,
6051         optimize_initlocals): Likewise.
6052         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
6053         * graph.c (mono_draw_code_cfg): Likewise.
6054         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
6055         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
6056         mono_ssa_cprop): Likewise.
6057         * abcremoval (get_relations_from_previous_bb, process_block):
6058         Likewise.
6059         * local-propagation (mono_cprop_invalidate_values,
6060         mono_local_cprop_bb): Likewise.
6061         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
6062         peephole_pass, mono_arch_output_basic_block,
6063         mono_arch_emit_prolog): Likewise.
6064         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
6065         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6066         mono_arch_emit_prolog): Likewise.
6067         (insert_after_ins): Delete.
6068         * aliasing.c (print_code_with_aliasing_information,
6069         mono_build_aliasing_information, mono_aliasing_deadce):
6070         Convert to new instruction lists.
6071         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
6072         peephole_pass, NEW_INS, mono_arch_lowering_pass,
6073         mono_arch_local_regalloc, mono_arch_output_basic_block):
6074         Likewise.
6075         (insert_after_ins): Delete.
6076         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
6077         peephole_pass, mono_arch_output_basic_block): Convert to
6078         new instruction lists.
6079         * mini-codegen (InstList, inst_list_prepend,
6080         insert_after_ins): Delete.
6081         (insert_before_ins, get_register_force_spilling,
6082         get_register_spilling, free_up_ireg, free_up_reg,
6083         create_copy_ins, create_spilled_store, alloc_int_reg,
6084         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
6085         to new instruction lists.
6086         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
6087         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
6088         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
6089         (insert_after_ins): Delete.
6090         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
6091         mono_arch_local_regalloc, mono_arch_output_basic_block,
6092         mono_arch_call_opcode): Convert to new instruction lists.
6093         (insert_after_ins): Delete.
6094         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
6095         peephole_pass, mono_arch_output_basic_block,
6096         mono_arch_emit_prolog): Convert to new instruction lists.
6097
6098 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
6099
6100         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
6101
6102         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
6103         Fixes #353182.
6104
6105         * Makefile.am (version.h): Make this work with non-bash shells.
6106
6107 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
6108
6109         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
6110
6111 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
6112
6113         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
6114         the InitializeArray optimization.
6115
6116 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
6117
6118         * mini.c driver.c: Don't include os/gc_wrapper.h.
6119
6120 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
6121
6122         * mini.c (print_jit_stats): Print GC statistics if available.
6123
6124 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
6125
6126         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
6127
6128 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
6129
6130         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
6131
6132 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
6133
6134         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
6135         
6136         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
6137
6138         * driver.c (mono_main): Ditto.
6139
6140 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
6141
6142         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
6143
6144         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
6145         in the vtable can't be encoded.
6146         (compile_method): Ditto.
6147
6148 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
6149
6150         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
6151         defined.
6152
6153         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
6154         lmf->rbp.
6155
6156         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
6157         the top LMF entry belongs to the current method.
6158
6159         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
6160
6161 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
6162
6163         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
6164         
6165         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
6166
6167         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
6168
6169         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
6170
6171         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
6172
6173         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
6174         implementation.
6175
6176         * basic-float.cs: Add an ulong->double cast test.
6177
6178 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
6179
6180         * mini.c (mono_method_to_ir): Fix a warning.
6181
6182 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
6183
6184         * mini-ops.h: Add OP_SWITCH.
6185
6186         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
6187         CEE_SWITCH in back-end code, use OP_SWITCH instead.
6188
6189 2007-12-11  Geoff Norton  <gnorton@novell.com>
6190
6191         * mini-s390x.c: Minor change to the MAX() define to allow
6192         it to compile with other gcc versions.
6193
6194 2007-12-11  Geoff Norton  <gnorton@novell.com>
6195
6196         * cpu-s390x.md:
6197         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
6198
6199 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6200
6201         exceptions-arm.c (mono_arch_get_restore_context): Restore
6202         the frame pointer.
6203
6204         exceptions-arm.c (throw_exception): Save the frame pointer.
6205         This is a partial fix for #323747. Only the client side is
6206         fixed.
6207
6208 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6209
6210         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
6211         was using an unrelated variable to log the class which
6212         needed the cctor to be called. This was crashing on arm.
6213
6214 2007-12-09  Robert Jordan  <robertj@gmx.net>
6215
6216         * mini-x86.c (mono_arch_emit_epilog):
6217         Consider all kinds of 64-bit types. Fixes #323114.
6218
6219 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
6220
6221         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
6222
6223 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6224
6225         * mini-amd64.c (peephole_pass): Add a missing instruction check.
6226
6227 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6228
6229         * mini.c: run type ctor before allocating an object, not only
6230         when running it's constructor method (fixes at least part of bug #342507).
6231
6232 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6233         
6234         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
6235         
6236         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
6237         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
6238         function.
6239
6240         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
6241         mono_generic_class_init_trampoline () the same as it is done with the other
6242         trampolines.
6243
6244         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
6245         aot-runtime.c aot-compiler.c: Implement AOT support.    
6246
6247 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6248
6249         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
6250         build for archs which don't have the vtable trampoline defined
6251         yet.
6252
6253 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6254
6255         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
6256
6257         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
6258
6259         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
6260
6261         * tramp-<ARCH>.c: Use the new helper function.
6262
6263 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6264
6265         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
6266         trampoline call, which takes a vtable argument.
6267
6268         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
6269         OP_TRAMPCALL_VTABLEs like other calls.
6270
6271         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
6272         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
6273         call.  Implemented a support function which fetches the vtable
6274         from a register set.
6275
6276         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
6277         Implemented a generic class init trampoline, using the
6278         OP_TRAMPCALL_VTABLE opcode.
6279
6280         * mini.c: Implemented static field access when sharing generic
6281         code.  This implies initing the class using the new
6282         OP_TRAMPCALL_VTABLE call.
6283
6284 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6285
6286         * mini.c: Don't compile methods with sharing enabled if their
6287         classes are disabled for sharing.
6288
6289 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6290
6291         * inssel.brg: Add a missing sign extension to the GETCHR and array access
6292         opcodes. Fixes #346563.
6293
6294         * objects.cs: Add a new test.
6295
6296         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
6297
6298         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
6299         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
6300
6301 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6302
6303         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
6304
6305 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
6306
6307         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
6308         code stream.
6309
6310 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
6311
6312         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
6313
6314         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
6315         optimization in the AOT case.
6316         
6317 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
6318
6319         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
6320         
6321         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
6322
6323         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
6324
6325         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
6326
6327         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
6328         is created by the inlined delegate ctor.
6329
6330         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
6331
6332         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
6333
6334 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
6335
6336         * cpu-x86.md: Fix the length of ckfinite.
6337
6338 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
6339
6340         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
6341         
6342         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
6343         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
6344
6345         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
6346
6347         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
6348         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
6349
6350 2007-11-28  Martin Baulig  <martin@ximian.com>
6351
6352         * mini-x86.c
6353         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
6354         after creating the trampoline.
6355
6356 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
6357
6358         * aot-runtime.c (load_aot_module): Check runtime version if needed.
6359
6360         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
6361         the same version.
6362
6363         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
6364         instead of the calling method to help AOT.
6365
6366         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
6367
6368 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
6369
6370         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
6371         is defined.
6372
6373 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
6374
6375         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
6376         
6377         * aot-compiler.c (compile_method): Correct check for generic method definitions.
6378         (encode_method_ref): No need to handle generic method definitions specially.
6379
6380         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6381
6382         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
6383         decode_klass_info.
6384
6385         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
6386         encode_klass_info.
6387         (compile_method): Enable generic sharing.
6388
6389 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
6390
6391         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
6392         (mini_method_compile): Add preliminary support for AOTing shared generic code.
6393
6394         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
6395         generic code.
6396
6397         * mini-trampolines.c: Fix a warning.
6398
6399         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
6400         NEW_PCONST.
6401         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
6402         (generic_class_is_reference_type): Remove unused function.
6403
6404         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
6405         in the generic vtable trampoline case.
6406
6407         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
6408         
6409         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
6410         return an AOT method based on a vtable slot.
6411
6412         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
6413
6414         * mini.c (mini_get_vtable_trampoline): Export this.
6415
6416 2007-11-22  Martin Baulig  <martin@ximian.com>
6417
6418         * debug-debugger.h
6419         (MonoDebuggerInfo): Move `debugger_version' up.
6420
6421 2007-11-22  Martin Baulig  <martin@ximian.com>
6422
6423         * mini-amd64.c
6424         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
6425
6426         * mini-trampolines.c
6427         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
6428         after compiling the method.
6429
6430 2007-11-20  Martin Baulig  <martin@ximian.com>
6431
6432         * debug-mini.c
6433         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
6434         (mono_debugger_remove_breakpoint): Likewise.
6435         (mono_debugger_check_breakpoints): Likewise.
6436
6437         * debug-debugger.c: Implement the new breakpoint interface here.
6438
6439 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
6440
6441         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
6442         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
6443
6444         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
6445
6446 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
6447
6448         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
6449
6450         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
6451         mini.c.
6452
6453         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
6454         mini.c.
6455
6456         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
6457         returning a vtype in a register.
6458
6459         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
6460         here from the arch specific code.
6461
6462         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
6463         mini.c.
6464
6465         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
6466         (mono_arch_emit_prolog): Increment maximum prolog size.
6467
6468         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
6469         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
6470
6471         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
6472         MonoGenericSharingContext.
6473
6474         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
6475         MonoGenericSharingContext. Allocate memory from the cfg mempool.
6476
6477 2007-11-15  Mark Probst  <mark.probst@gmail.com>
6478
6479         * mini.c, mini.h, generic-sharing.c: Functions for producing code
6480         which extract fields out of the runtime generic context.  Full
6481         sharing of the NEWARR opcode.
6482
6483 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6484
6485         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
6486         --enable-minimal=ssa.
6487
6488 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
6489
6490         * mini-trampolines.c (mono_delegate_trampoline): Update after 
6491         mono_marshal_get_delegate_invoke () signature change.
6492
6493 2007-11-13  Mark Probst  <mark.probst@gmail.com>
6494
6495         * mini.c: Removed the shared context in favor of the generic
6496         sharing context.  Allocate the MonoJitInfo structure with room for
6497         the generic sharing context if it's needed.
6498
6499         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
6500         domain-internals.h now.
6501
6502         * mini-x86.c: Pass the generic sharing context to get_call_info ().
6503
6504         * generic-sharing.c: Several changes for working without a shared
6505         context and instead operating on open types instead.
6506
6507 2007-11-12  David S. Miller  <davem@davemloft.net>
6508
6509        * inssel-sparc.brg: Fix double instruction emit.
6510
6511 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
6512
6513         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
6514         Get/Set/Address methods.
6515         
6516         * mini.c debug-debugger.c mini-trampolines.c: Update after 
6517         mono_marshal_get_delegate_invoke signature change.
6518
6519 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6520
6521         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
6522         This can happens with dynamic methods. Fixes the other bug in #322722.
6523
6524 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6525
6526         * tramp-arm.c (mono_arch_patch_callsite): Support patching
6527         BX call sequence.
6528
6529         * mini-arm.c (arm_patch): Implement patching of BX call
6530         sequence. Fixes one of the bugs in #322722.
6531
6532 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
6533
6534        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
6535        under Linux.  We only need to flush every 32-byte cache line.    
6536
6537 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
6538
6539         * mini.c:
6540         move_basic_block_to_end: Add branches when needed, eventually creating
6541         a new BB.
6542         optimize_branches: added a parameter that tells if it's ok to create
6543         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
6544         and avoid calling move_basic_block_to_end when it's not ok.
6545         Fixes bug 318677.
6546
6547 2007-11-07  Mark Probst  <mark.probst@gmail.com>
6548
6549         * mini.c: Abort inlining call to InitializeArray if something
6550         looks wrong.  Let the icall handle it, which now has proper safety
6551         checks.
6552
6553 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6554
6555         * mini.c (mono_spill_call): add support for soft-float.
6556
6557         * mini.c (mono_method_to_ir): add support for soft-float
6558         to inlined functions that return float.
6559
6560         * mini.c (mono_method_to_ir): add support for soft-float
6561         to cee_stsfld opcode on float fields.
6562
6563 2007-11-05  Geoff Norton  <gnorton@novell.com>
6564
6565         * mini-x86.h: Fix the structure access for X86 Leopard.
6566
6567
6568 2007-11-05  Martin Baulig  <martin@ximian.com>
6569
6570         * mini-trampolines.c
6571         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
6572         after compiling the method to notify the debugger.
6573
6574 2007-11-05  Martin Baulig  <martin@ximian.com>
6575
6576         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
6577
6578 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
6579
6580         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
6581         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
6582
6583 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
6584
6585         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
6586         native-to-managed wrappers.
6587         
6588 2007-11-01  Geoff Norton  <gnorton@novell.com>
6589
6590         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
6591         members.
6592
6593 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
6594
6595         * mini.c, mini-x86.c: when getting back from unmanaged code
6596         to managed via a marshaled delegate we also need to set the
6597         right domain.
6598
6599 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
6600
6601         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
6602         for amd64.
6603
6604 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6605
6606         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
6607         let the debugger or other external agents to tell the JIT when
6608         a sw breakpoint has been inserted in the code that the JIT needs
6609         to be able to inspect.
6610
6611 2007-10-31  Martin Baulig  <martin@ximian.com>
6612
6613         * debug-debugger.h
6614         (MonoDebuggerInfo): Remove `runtime_class_init'.
6615
6616 2007-10-30  Martin Baulig  <martin@ximian.com>
6617
6618         * debug-mini.h
6619         (mono_debugger_thread_created): Added `MonoThread *' argument.
6620         (mono_debugger_extended_notification): New public method.
6621         (mono_debugger_trampoline_compiled): New public method.
6622
6623         * debug-mini.c
6624         (MonoDebuggerThreadInfo): Added `thread' and
6625         `extended_notifications' fields.
6626
6627         * debug-debugger.c
6628         (debugger_executable_code_buffer): New static variable.
6629
6630         * debug-debugger.h
6631         (MonoDebuggerInfo): Added `executable_code_buffer',
6632         `executable_code_buffer_size', `breakpoint_info_area',
6633         `breakpoint_table' and `breakpoint_table_size'.
6634
6635 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
6636
6637         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
6638         that IP  either is an unused value or the vtable pointer. IMT 
6639         calls use vtable + offset now. Reduced by almost half the size
6640         of IMT entries.
6641
6642 2007-10-26  Jonathan Chambers <joncham@gmail.com>
6643
6644         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
6645         defines to access param registers. Replace long usage with
6646         gsize as sizeof(long) != sizeof(void*) on Win64.
6647
6648         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
6649         on Win64. Fix intrinsic, use _AddressOfReturnAddress
6650         instead of non-existant _GetAddressOfReturnAddress.
6651
6652         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
6653         param registers. Save/restore %rdi and %rsi in MonoLMF.
6654
6655         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
6656         param registers. Modify (throw_exception) signature to take 
6657         %rdi and %rsi on Win64. 
6658
6659         Code is contributed under MIT/X11 license.
6660
6661 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6662
6663         * helpers.c: unlink debugging output files.
6664
6665 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
6666
6667         * mini.c: Move mono_create_ftnptr () to object.c.
6668
6669 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6670
6671         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
6672         optional. This function can now be used to disassemble code generated
6673         outside the JIT such as trampolines and IMT thunks.
6674
6675         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
6676
6677         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
6678         vtable pointer from a ldr instruction.
6679
6680         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
6681         new IMT call sequence.
6682
6683         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
6684         call sequence for interface invocations.
6685
6686         * mini-arm.c (mono_arch_emit_imt_argument): added, required
6687         for imt support. This function is empty since IMT on ARM requires no
6688         special handling on the IR side.
6689
6690         * mini-arm.c (mono_arch_find_imt_method): added, required for
6691         imt support.
6692
6693         * mini-arm.c (mono_arch_find_this_argument): added, required
6694         for imt support.
6695
6696         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
6697         a ldr instruction to load a value stored in the code stream.
6698
6699         * mini-arm.c (mono_arch_build_imt_thunk):added, required
6700         for imt support.
6701
6702
6703 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
6704
6705         * mini.c (mini_init): Install the jump trampoline callback.
6706
6707 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6708
6709         * mini-trampolines.c: handle synchronized methods with the common
6710         vtable trampoline (bug #335601).
6711
6712 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
6713
6714         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
6715
6716         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
6717         64 bit platforms.
6718
6719         * mini-ia64.h mini-ia64.c: Add support for IMT.
6720
6721         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
6722         prolog. Fixes #331958.
6723
6724 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
6725
6726         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
6727
6728 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6729
6730         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
6731         trampoline.
6732
6733 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6734
6735         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
6736         trampoline.
6737
6738 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
6739
6740         * mini-x86.c, mini-x86.h: x86 support for the common vtable
6741         trampoline.
6742
6743 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
6744
6745         * mini-trampolines.c: changed the magic rampoline to understand
6746         the common vtable trampoline method: the method to invoke is
6747         determined by the vtable displacement of the call.
6748
6749 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6750
6751         * mini.c, mini.h: register the common vtable trampoline if the
6752         architecture supports it.
6753
6754 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6755
6756         * cpu-amd64.md: use the correct max length for tls_get.
6757
6758 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
6759
6760         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
6761         CEE_STELEM_ANY. Fixes #333696.
6762
6763 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
6764
6765         * exceptions-x86.c: provide more graceful handling of the case where
6766         we followed a bogus function pointer from managed code (bug #332866).
6767
6768 2007-10-11  Mark Probst  <mark.probst@gmail.com>
6769
6770         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
6771         replaces the generic_shared flag and will carry more information
6772         in the future.
6773
6774         * generic-sharing.c: Added mini_type_stack_size() which allows
6775         allows open types if given a generic sharing context.
6776         mini_get_basic_type_from_generic() takes a
6777         MonoGenericSharingContext* instead of a MonoCompile* now.
6778
6779         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
6780         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
6781         mini-sparc.c, mini-x86.c: Trivial changes required by the two
6782         changes above.  Just passing arguments through to the right
6783         places.
6784
6785 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
6786
6787         * mini-arm.c: unify the call emission to emit_code_seq().
6788
6789 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
6790
6791         * tramp-arm.c: reduced the trampoline size.
6792
6793 2007-10-10  Mark Probst  <mark.probst@gmail.com>
6794
6795         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
6796         variable handling out of arch-specific code.
6797
6798 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
6799
6800         * mini-arm.c: implemented fast delegate dispatch.
6801
6802 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6803
6804         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
6805         that fp elimination is turned off if the space required by locals is too
6806         big. Fixes #331958.
6807
6808 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
6809
6810         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
6811         ARM to the new style trampoline.
6812
6813 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6814
6815         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
6816
6817         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
6818
6819 2007-10-09  Martin Baulig  <martin@ximian.com>
6820
6821         * debug-debugger.h
6822         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
6823         `field_info_offset_offset'.     
6824
6825 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
6826
6827         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
6828         removed more internal usage of the r11 register and made it available
6829         to the register allocator.
6830
6831 2007-10-08  Mark Probst  <mark.probst@gmail.com>
6832
6833         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
6834         when sharing generics and treat type variables as references.
6835
6836 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6837
6838         * mini-ppc.c: started removing the internal uses of register r11
6839         to eventually allow the register allocator to manage it as an
6840         additional available register.
6841
6842 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
6843
6844         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
6845
6846 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
6847
6848         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
6849         specific trampolines as they are not performance critical as a jump
6850         target (maybe align as before only for AOT code?). This saves about
6851         200 KB of native code on x86 for monodevelop startup.
6852
6853 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
6854
6855         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
6856         monodevelop startup.
6857
6858 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
6859
6860         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
6861
6862         * mini-sparc.h mini-sparc.c: Implement IMT support.
6863
6864         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
6865         its smaller and doesn't clobber sparc_g1.
6866
6867         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
6868
6869 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6870
6871         * mini-ppc.c: optimized the size of the IMT thunks a bit.
6872
6873 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
6874
6875         * mini-ppc.c: implemented fast delegate invocation.
6876
6877 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
6878
6879         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
6880
6881 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6882
6883         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
6884         code to the new style trampoline in preparation for IMT support.
6885
6886 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
6887
6888         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
6889         systems already. This also reduces the specific trampiline sizes and
6890         prepares for the use of r12 as the IMT identifier register.
6891
6892 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6893
6894         * mini-mips.h: endianess fix (simplified from a patch by
6895         Thomas Kunze <thommy@tabao.de>, bug #323737).
6896
6897 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6898
6899         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
6900         to access ucontext fields and enable netbsd support
6901         (partially from Magnus Henoch <mange@freemail.hu>).
6902
6903 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6904
6905         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
6906         use the preprocessor from the CPP env var if it is set.
6907
6908 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6909
6910         * mini-trampolines.c: fixed an assertion and moved it earlier in the
6911         code, before interface_offset gets used.
6912
6913 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
6914
6915         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
6916         mono_class_setup_vtable () before accessing klass->vtable.
6917
6918 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
6919
6920         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
6921         hackish.
6922
6923 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6924
6925         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
6926         IMT slots (this saves hundreds of KB of memory in programs like
6927         IronPython and Monodevelop).
6928
6929 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
6930
6931         * mini.c: print the delegate counter.
6932
6933 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
6934
6935         * mini-x86.c: make it easier to enable the debugging code for IMT
6936         slots.
6937
6938 2007-09-28  Martin Baulig  <martin@ximian.com>
6939
6940         * debug-debugger.h
6941         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
6942         `mono_method_klass_offset' and `mono_method_token_offset'.
6943
6944 2007-09-20  Mark Probst  <mark.probst@gmail.com>
6945
6946         * mini.c: First generics sharing implementation.  Can only share
6947         in very simple cases.  If sharing doesn't work it falls back to
6948         dedicated compilation.
6949
6950         * mini.h: Flag in MonoCompile to specify whether generic
6951         compilation is shared.  Flags enum for marking which generic inst
6952         of a context is used.  Prototypes for helper functions.
6953
6954         * generic-sharing.c: Helper functions for generic method sharing.
6955
6956         * optflags-def.h: Optimization flag (gshared) for enabling generic
6957         method sharing added.
6958
6959         * Makefile.am: generic-sharing.c added.
6960
6961 2007-09-19 Daniel Nauck <dna@mono-project.de>
6962
6963         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
6964
6965 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
6966         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
6967         fixes bug 325507.
6968
6969 2007-09-19  Martin Baulig  <martin@ximian.com>
6970
6971         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
6972         mono_debug_cleanup() is now part of mono_cleanup().
6973
6974 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
6975
6976         * driver.c (mono_main): Fix a warning.
6977
6978 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
6979
6980         * aot-compiler.c: Optimize various parts when processing large assemblies.
6981         Fixes ##325568.
6982
6983         * mini.c (mono_patch_info_hash): Improve hash function.
6984
6985 2007-09-14  Jonathan Chambers <joncham@gmail.com>
6986
6987         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
6988         
6989         Code is contributed under MIT/X11 license.
6990
6991 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6992
6993         * mini.c (mini_init): Fix a leak.
6994
6995         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
6996
6997 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
6998
6999         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
7000
7001 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
7002
7003         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
7004
7005 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
7006
7007         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
7008         variance tests.
7009
7010         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
7011
7012         * mini.c (handle_alloc): Enable managed allocators in AOT code.
7013
7014         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
7015
7016         * aot-runtime.c (decode_patch_info): Ditto.
7017
7018 2007-09-12  Jonathan Chambers <joncham@gmail.com>
7019
7020         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
7021         static case. Cache delegates in architecture specific code, 
7022         based on number of parameters.
7023         
7024         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
7025         in architecture specific code, based on number of parameters.
7026         
7027         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
7028         caching happen in architecture specific code now.
7029         
7030         Code is contributed under MIT/X11 license.
7031
7032 2007-09-12  Jonathan Chambers <joncham@gmail.com>
7033
7034         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
7035         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
7036         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
7037
7038         Code is contributed under MIT/X11 license.
7039
7040 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7041         * mini.c: (mono_thread_abort) Fixed bug #82416.
7042
7043 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
7044
7045         * mini.: hook the new managed GC allocation feature into the JIT.
7046
7047 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7048
7049         * mini.c: implementation for the new runtime tls opcode.
7050
7051 2007-09-11  Martin Baulig  <martin@ximian.com>
7052
7053         * debug-debugger.h
7054         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
7055         `mono_method_inflated_offset'.
7056
7057 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * driver.c mini.h mini.c: Add a new devel command line option for injecting
7060         async exceptions into a method.
7061
7062         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
7063         purpose of testing whenever the unwinder works at every instruction.
7064
7065 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
7066
7067         * mini.c: check accessibility of method used in ldftn (fixes
7068         bug #82635).
7069
7070 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
7071
7072         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
7073
7074         * inssel.brg: Fix a warning.
7075
7076 2007-09-03  Martin Baulig  <martin@ximian.com>
7077
7078         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
7079         now takes the `main_method' as argument.
7080
7081 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
7082
7083         * cpu-sparc.md (endfilter): Add missing src1:i argument.
7084
7085 2007-08-30  Jonathan Chambers <joncham@gmail.com>
7086
7087         * driver.c: include the cil-coff.h header on Windows.
7088         
7089         Code is contributed under MIT/X11 license.
7090
7091 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7092
7093         * mini.c, driver.c: don't include the cil-coff.h header.
7094
7095 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
7096
7097         * mini.c: flag places that needs fixes fo soft-float support.
7098
7099 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
7100
7101         * mini.h, inssel-float.brg: fix soft-float constant loads on big
7102         endian systems (partially from Dean Jenkins, bug #81924).
7103
7104 2007-08-28  Mark Probst  <mark.probst@gmail.com>
7105
7106         * mini.c (check_linkdemand): Remove embedded reference object in
7107         call to LinkDemandSecurityException.
7108         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
7109         with an IntPtr instead of a reference object.
7110
7111 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
7112
7113         * mini.c (handle_initobj): Handle alignment properly.
7114
7115         * inssel.brg (mini_emit_memset): Ditto. 
7116
7117         * inssel.brg (mini_emit_memcpy): Ditto. 
7118
7119         * inssel-sparc.brg: Ditto.              
7120
7121         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
7122
7123 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
7124
7125         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
7126         exceptions raised in unmanaged code. Fixes part of #82594.
7127
7128 2007-08-24  Mark Probst  <mark.probst@gmail.com>
7129
7130         * mini.c (mono_method_to_ir), declsec.c
7131         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
7132
7133 2007-08-22  Martin Baulig  <martin@ximian.com>
7134
7135         * debug-mini.h
7136         (MonoDebuggerThreadInfo): New typedef.
7137         (mono_debugger_thread_table): New global variable.
7138         (mono_debugger_thread_created): New public function.
7139         (mono_debugger_thread_cleanup): New public function.
7140
7141         * debug-debugger.h
7142         (MonoDebuggerInfo):
7143         - removed `get_current_thread' and `lookup_assembly'.
7144         - removed `data_table'.
7145         - added `thread_table'.
7146
7147         * mini.c
7148         (mono_thread_start_cb): Call mono_debugger_thread_created().
7149         (mono_thread_attach_cb): Likewise.
7150         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
7151         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
7152         initial domain.
7153
7154         * driver.c (mono_main): Move mono_debug_init() up, before calling
7155         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
7156
7157 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7158
7159         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
7160         together when passing several arguments of type double (gives a small
7161         speedup and saves a few bytes of generated code).
7162
7163 2007-08-20  Jb Evain  <jbevain@novell.com>
7164
7165         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
7166
7167 2007-08-20  Jb Evain  <jbevain@novell.com>
7168
7169         * mini.c (mono_method_to_ir): throw MethodAccessException
7170         and FieldAccessException instead of InvalidProgramException.
7171
7172 2007-08-20  Mark Probst  <mark.probst@gmail.com>
7173
7174         * mini.c: CoreCLR security checks.
7175
7176         * mini.h: Removed MonoSecurityMode (moved to
7177         metadata/security-manager.h) and mono_security_mode global var
7178         (replaced by set/get functions in security-manager.h).
7179
7180         * driver.c: Added "core-clr-test" security mode for testing.  Used
7181         set-function for setting security mode.
7182
7183 2007-08-17  Mark Probst  <mark.probst@gmail.com>
7184
7185         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
7186         the new jit_info_table.
7187
7188         * driver.c: Test code for the new jit_info_table (enabled by the
7189         define MONO_JIT_INFO_TABLE_TEST).
7190
7191 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
7192
7193         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
7194         detection of call <REG> instruction sequence. Fixes build on freebsd.
7195
7196 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
7197
7198         * mini-exceptions.c: Fix a warning.
7199
7200 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
7201
7202         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
7203         stack overflow handling code on amd64 too.
7204
7205         * mini-exceptions.c (mono_setup_altstack): Make this use 
7206         mono_thread_get_stack_bounds ().
7207
7208         * mini-x86.h: Disable sigaltstack on solaris x86.
7209
7210 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
7211
7212         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
7213
7214 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
7215
7216         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
7217
7218 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
7219
7220         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
7221
7222         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
7223
7224 2007-08-03  Neale Ferguson <neale@sinenomine.net>
7225
7226         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
7227         due to alignment.
7228
7229 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7230
7231         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
7232         to be emitted (bug #82281).
7233
7234 2007-08-01  Martin Baulig  <martin@ximian.com>
7235
7236         Merged the `debugger-dublin' branch.
7237
7238         * debug-debugger.h (MonoDebuggerInfo):
7239         Removed the `old_*' compatibility entries.
7240         Added `debugger_version' and `data_table'.
7241         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
7242         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
7243
7244         * debug-mini.c
7245         (MiniDebugMethodBreakpointInfo): Add `address_list'.
7246         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
7247         instead of a `gconstpointer'.
7248         (mono_debugger_insert_method_breakpoint): Return a
7249         `MonoDebugMethodAddressList *'.
7250
7251 2007-06-28  Martin Baulig  <martin@ximian.com>
7252
7253         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7254
7255 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
7256
7257         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
7258         __builtin_frame_address () since it is broken on older gcc versions.
7259
7260 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
7261
7262         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
7263         on the stack overflow handling and made the managed stack overflows
7264         catchable in most cases using soft guard pages.
7265         * exceptions-x86.c: added code to restore the protection in the soft
7266         guard pages at the end of exception handling.
7267
7268 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
7269
7270         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
7271
7272 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7273
7274         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
7275         exception handling.
7276
7277 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7278
7279         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
7280         signal handling support until it has been ported to the new mechanism.
7281         * mini.c: fixed stack overflow detection and use the new
7282         architecture code  to handle signals on the altstack.
7283
7284 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
7285
7286         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
7287         stack overflows on the alt stack.
7288
7289 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
7290
7291         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
7292         stack overflows on the alt stack.
7293
7294 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
7295
7296         * exceptions-ppc.c: cleanup preparing for altstack support.
7297
7298 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7299
7300         * exceptions-arm.c: cleanup preparing for altstack support.
7301
7302 2007-07-27  Mark Probst  <mark.probst@gmail.com>
7303
7304         * mini.c (print_jit_stats): Output hazard pointer stats.
7305
7306 2007-07-26  Mark Probst  <mark.probst@gmail.com>
7307
7308         * driver.c, mini.c: Replaced security mode flags with a single
7309         enum variable.
7310
7311 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7312
7313         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
7314
7315 2007-07-25  Mark Probst  <mark.probst@gmail.com>
7316
7317         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
7318         (which doesn't do anything yet) for activating Core CLR
7319         (Silverlight) security.
7320
7321 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
7322
7323         * mini-codegen.c: work around a possible gcc bug on arm.
7324
7325 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
7326
7327         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
7328         message for platforms that don't support AOT compilation.
7329
7330 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
7331
7332         * mini.h, mini.c, driver.c: temporary smcs hack.
7333
7334 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
7335
7336         * mini-arm.h, mini-arm.c: arm EABI fixes.
7337
7338 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
7339
7340         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
7341         case.
7342
7343         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
7344         trampolines taking a method argument.
7345
7346         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
7347
7348         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
7349         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
7350
7351         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
7352         JIT compilation throws an exception. Fixes #82050.
7353
7354 2007-07-19  Mark Probst  <mark.probst@gmail.com>
7355
7356         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
7357         with the MONO_EXCEPTION_ defines.
7358
7359 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
7360
7361         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
7362         #82117.
7363         
7364         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
7365         the cause of an assertion.
7366
7367 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
7368
7369         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
7370         removed.
7371
7372 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
7373
7374         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
7375         assert. Should fix #82103.
7376
7377 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
7378
7379         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
7380         here too. Fixes #82095.
7381
7382         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
7383         addresses.
7384
7385         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
7386
7387         * mini-amd64.h: Enable IMT for amd64.
7388         
7389         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
7390
7391 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
7392
7393         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
7394
7395 2007-07-12  Mark Probst  <mark.probst@gmail.com>
7396
7397         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
7398         as soon as check_linkdemand sets an exception_type.
7399
7400 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7401
7402         * mini-x86.c: fixed offsets for IMT call sequence.
7403         * mini-x86.h: enable IMT again.
7404
7405 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7406
7407         * trace.c (mono_trace_enter_method): Decode MonoType too.
7408
7409         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
7410
7411         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
7412
7413         * mini-amd64.c: Add preliminary IMT implementation.
7414         
7415 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
7416
7417         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
7418         understand the new IMT-base interface invocation (thanks to
7419         Daniel Nauck for the report and the remote debugging session).
7420
7421 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
7422
7423         * mini-x86.c: size and speed optimizations for the IMT bsearch.
7424
7425 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7426
7427         * Makefile.am (aotcheck): Make this actually use the AOTed code.
7428
7429 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
7430
7431         * mini-trampolines.c: implement AOT IMT support.
7432         * mini-x86.h: enable IMT support for wider testing.
7433
7434 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7435
7436         * inssel.brg (emit_imt_argument): Add aot support here.
7437
7438         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
7439
7440 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
7441
7442         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
7443         of the IMT implementation, partially from massi, with my
7444         implementation of the bsearch sequence. Disabled by default until
7445         the AOT code is implemented.
7446
7447 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7448
7449         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
7450
7451         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
7452
7453 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7454
7455         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
7456         arch-independent IMT JIT code from Massimiliano
7457         Mantione (massi@ximian.com) with small cleanups from me.
7458
7459 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7460
7461         * Makefile.am: fix svn invocation to get the svn revision to be
7462         independent of the local language (build fix).
7463
7464 2007-07-09  Mark Probst  <mark.probst@gmail.com>
7465
7466         * mini.c (inline_method): Reset cfg->exception_type if the
7467         inlining is aborted.  Fixes: 82049.
7468
7469 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
7470
7471         * mini.c: remove assert from exception handling code when exception_ptr
7472         is not set.
7473
7474 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7475
7476         * mini.c (mono_codegen): Add an assert.
7477
7478         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
7479         enter and leave code.
7480         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
7481
7482 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7483
7484         * mini-ppc.c: fixed memory corruption for localloc(0)
7485         (bug #81852).
7486
7487 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7488         
7489         * mini.c: Fix warnings.
7490
7491 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
7492
7493         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
7494         to emit better double->int conversions.
7495
7496 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7497
7498         * mini.c: the provided Min/Max optimizations are valid for unisgned
7499         ints.
7500
7501 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
7502
7503         * 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
7504
7505 2007-06-28  Miguel de Icaza  <miguel@novell.com>
7506
7507         * mini.c (mono_running_on_valgrind): Add support for reporting the
7508         method and  its boundaries to valgrind.
7509
7510 2007-06-28  Martin Baulig  <martin@ximian.com>
7511
7512         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7513
7514 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
7515
7516         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
7517
7518         * generic.2.cs: Add new test case.
7519
7520 2007-06-25  Martin Baulig  <martin@ximian.com>
7521
7522         Merged the `debugger-dublin' branch.
7523
7524         * debug-mini.c
7525         (mono_debugger_insert_method_breakpoint): New public method.
7526         (mono_debugger_remove_method_breakpoint): Likewise.
7527         (mono_debugger_check_breakpoints): New static method.
7528         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
7529
7530         * debug-debugger.h (MonoDebuggerInfo):
7531         Renamed (to keep backward compatibility in the vtable):
7532         `insert_breakpoint' -> `old_insert_breakpoint'.
7533         `remove_breakpoint' -> `old_remove_breakpoint'.
7534         `create_string' -> `old_create_string'.
7535         `lookup_class' -> `old_lookup_class'.
7536         `lookup_type' -> removed; changed into a dummy field.
7537         `lookup_assembly' -> `old_lookup_assembly'.
7538         Added (same functionality, but different signature):
7539         `create_string', `lookup_class', `lookup_assembly'
7540         Added new:
7541         `get_method_addr_or_bpt', `remove_method_breakpoint',
7542         `runtime_class_init'.
7543
7544         * debug-debugger.c: Merged the `debugger-dublin' branch.
7545
7546 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
7547
7548         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
7549         well.
7550         (peephole_pass): Likewise.
7551
7552 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
7553
7554         * driver.c: hopefully make setaffinity work also for ancient
7555         versions of linux.
7556
7557 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
7558
7559         * driver.c : win32 build fix.
7560
7561 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
7562
7563         * driver.c: check for the MONO_NO_SMP env var and bind to a single
7564         processor if it is set.
7565
7566 2007-06-21  Martin Baulig  <martin@ximian.com>
7567
7568         * debug-mini.h: New file.
7569
7570         * debug-mini.c
7571         (mono_debugger_insert_breakpoint_full): Moved here from
7572         ../metadata/mono-debug-debugger.c.
7573         (mono_debugger_remove_breakpoint): Likewise.
7574         (mono_debugger_breakpoint_callback): Likewise.
7575
7576 2007-06-15  Raja R Harinath  <rharinath@novell.com>
7577
7578         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7579         changes in MonoGenericClass.
7580
7581 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
7582
7583         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
7584
7585 2007-06-14  Raja R Harinath  <rharinath@novell.com>
7586
7587         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7588         removal of MonoGenericMethod.
7589
7590 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7591
7592         * mini-exceptions.c: hooks for the exception events profiling API.
7593
7594 2007-06-14  Randolph Chung  <tausq@debian.org>
7595
7596         * Makefile.ma: Add hppa target.
7597         * mini-arch.h: Include mini-hppa.h
7598         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
7599         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
7600         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7601
7602 2007-06-14  Randolph Chung  <tausq@debian.org>
7603
7604         * inssel.brg: Add rules for "chained" compare-branch operations so that
7605         a single compare op can affect multiple branches.  Adjust cost for
7606         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
7607         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
7608         cost for some rules so that they can more easily be overridden by
7609         per-arch rules (with fixes from lupus).
7610         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7611
7612 2007-06-13  Randolph Chung  <tausq@debian.org>
7613
7614         * mini-ops.h: Reorder branch ops so that they match the order of the
7615         corresponding CEE_* ops.  The code expects them this way.
7616         Add new ops for HPPA target.
7617         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7618
7619 2007-06-13  Randolph Chung  <tausq@debian.org>
7620
7621         * mini-exceptions.c: Handle cases where the stack grows towards
7622         larger addresses.
7623         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7624
7625 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7626
7627         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
7628         counter.
7629         * driver.c: explain where a non-matching corlib is found.
7630
7631 2007-06-13  Mark Probst  <mark.probst@gmail.com>
7632
7633         * mini.c (print_jit_stats): Output dynamic code allocation stats.
7634
7635 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
7636
7637         * mini-exceptions.c: Generate a method profile leave event during
7638         an exception to ensure that the profiler gets notified.
7639
7640 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
7641
7642         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
7643         branch.
7644
7645         * cpu-amd64.md: Add long_and/or/xor opcodes.
7646
7647 2007-06-06  Wade Berrier  <wberrier@novell.com>
7648
7649         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
7650         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
7651         length of instruction shr_imm (expected 8, got 10)
7652
7653 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
7654
7655         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
7656
7657 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7658
7659         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7660         MonoInternalHashTable again (fixed bug in the internal hash table
7661         code).
7662
7663 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7664
7665         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
7666         Have to figure out what makes it crash the SWF regression.
7667
7668 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
7669
7670         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
7671
7672 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7673
7674         * mini.c: optimize out the type check when storing null in a
7675         reference array.
7676
7677 2007-06-04  Mark Probst  <mark.probst@gmail.com>
7678
7679         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7680         MonoInternalHashTable.
7681
7682 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
7683
7684         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
7685         signed integer methods.
7686
7687 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7688
7689         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
7690         permanently since the current approach doesn't work.
7691
7692 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7693
7694         * inssel.brg (stmt): Only call delegate->invoke_impl if 
7695         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
7696
7697 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7698
7699         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
7700         the sreg2==rdx case.
7701         
7702         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
7703         account if it contains a rex prefix.
7704         (peephole_pass): Handle OP_FMOVE as well.
7705
7706 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7707
7708         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
7709         as it causes regressions.
7710
7711 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
7712
7713         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
7714         static case as well.
7715
7716         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
7717
7718         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7719         (mono_arch_get_this_arg_from_call): Ditto.
7720
7721         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
7722
7723         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
7724         invoke_impl field.
7725
7726         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7727         (mono_arch_get_this_arg_from_call): Ditto.
7728
7729         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
7730         
7731         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
7732         try to create optimized invoke code and use that for further invocations. 
7733         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
7734
7735         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
7736
7737 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
7738
7739         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
7740         sealed classes or methods.
7741         *devirtualization.cs: tests for the new optimization
7742
7743 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
7744
7745         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
7746         by the update_volatile () function.
7747
7748 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
7749
7750         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
7751         require it.
7752
7753         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
7754
7755 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
7756
7757         * mini.c: Add configure checks for header files.
7758         * mini-x86.c: Add configure checks for header files.
7759         * trace.c: Add configure checks for header files.
7760         * aot-runtime.c: Add configure checks for header files.
7761         * aot-compiler.c: Add configure checks for header files.
7762         * driver.c: Add configure checks for header files.
7763         * mini-codegen.c: Add configure checks for header files.
7764         
7765         Code is contributed under MIT/X11 license.
7766
7767 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
7768
7769         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
7770         icompare_imm -128 + op_iclt. Fixes #81703.
7771
7772 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
7773
7774         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
7775
7776 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7777
7778         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
7779         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
7780         so that all isinst checks now use "interface_bitmap".
7781
7782 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
7783
7784         * cpu-amd64.md (jmp): Fix a warning.
7785
7786         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
7787
7788         * basic.cs: Add new regression test.
7789
7790         * basic.cs: Remove test which is now in basic-long.cs.
7791
7792         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
7793
7794         * basic-long.cs: Add new test.
7795         
7796 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
7797
7798         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
7799
7800 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
7801
7802         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
7803
7804         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
7805         places.
7806         
7807         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
7808         throwing code a bit.
7809
7810         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
7811         the exception throwing code a bit.
7812
7813         * mini-x86.c (get_call_info): Allocate result from a mempool.
7814
7815 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
7816
7817         * aot-compiler.c (find_typespec_for_class): Fix the assert.
7818
7819         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
7820
7821         * mini.h (MonoCompile): Add 'token_info_hash' field.
7822
7823         * mini.c: Save token->method associations during compilation so the AOT 
7824         compiler can use it.
7825         
7826         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
7827         which reference generic classes and methods.
7828
7829 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
7830
7831         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
7832
7833         * aot-compiler.c (compile_method): Fix a typo in a comment.
7834
7835         * aot-runtime.c (decode_cached_class_info): Skip generic types.
7836
7837         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
7838         everything generic.
7839
7840         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
7841
7842 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
7843
7844         * mini.h (MonoCompile): Add 'args' field.
7845
7846         * mini.c (mono_compile_create_vars): Store variables representing the arguments
7847         into cfg->args.
7848
7849         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
7850
7851 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
7852
7853         * mini.c (mono_compile_get_interface_var): Remove this unused function.
7854
7855         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
7856
7857         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
7858         opcodes for some opcodes.
7859
7860         * mini.h *.brg *.c: Use the new opcodes.
7861
7862 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
7863
7864         * mini.h: Bumped aot revision.
7865
7866         * inssel.brg: modified code generation of type checks for interfaces
7867         to use the new "MonoClass.interface_bitmap" instead of the old
7868         "MonoClass.interface_offsets".
7869
7870 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
7871
7872         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
7873
7874 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
7875
7876         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
7877         64 bit platforms.
7878
7879 2007-04-27  Neale Ferguson <neale@sinenomine.net>
7880
7881         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
7882
7883 2007-04-27  Wade Berrier  <wberrier@novell.com>
7884
7885         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
7886         mini.h) to fix build.
7887
7888 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
7889
7890         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
7891         
7892         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
7893         causes the corlib unit tests to fail.
7894
7895 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
7896
7897         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
7898
7899         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
7900
7901         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
7902         opcodes to the comparison relations.
7903
7904         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
7905         opcodes to their types.
7906         
7907         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
7908
7909         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
7910         it in cfg->arch.cinfo.
7911
7912         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
7913
7914         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
7915         cfg->cil_offset_to_bb.
7916
7917 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
7918
7919         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
7920         created becase of initlocals.
7921
7922 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
7923
7924         * mini-alpha.c cpu-alpha.md: More alpha port work from 
7925         Sergey Tikhonov <tsv@solvo.ru>.
7926
7927 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
7928
7929         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
7930
7931 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
7932
7933         * cpu-s390.md (break): Correct the length of break instruction.
7934
7935 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7936
7937         * mini.c: fix a couple of soft-float issues and comments.
7938
7939 2007-04-15  Miguel de Icaza  <miguel@novell.com>
7940
7941         * trace.c (is_filenamechar): - is also a filename char.
7942
7943 2007-04-15  Neale Ferguson <neale@sinenomine.net>
7944
7945         * mini-s390.c: Correct checking for enum type in return value processing.
7946
7947 2007-04-14  Raja R Harinath  <rharinath@novell.com>
7948
7949         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
7950         (version.h): Makefile is in the build directory.
7951
7952 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
7953
7954         * mini-amd64.h: fix for assertion failure on Solaris/amd64
7955
7956 2007-04-11  Martin Baulig  <martin@ximian.com>
7957
7958         * mini.c (can_access_member): Fix handling of generic classes;
7959         fixes #81259.
7960
7961 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
7962
7963         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
7964
7965 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
7966
7967         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
7968
7969 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
7970
7971         * mini-codegen.c: make sure the right spill amount is
7972         used for fp or integer registers (fixes the float_sub_spill() on ppc).
7973
7974 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
7975
7976         * mini-ppc.c: fixes for the fp_branch_nan test.
7977
7978 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
7979
7980         * basic.cs: Comment out new test which still fails on ia64.
7981
7982 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7983
7984         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
7985
7986 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
7987
7988         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
7989
7990 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
7991
7992         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
7993         on 64 bit machines. Fixes part of #80738.
7994
7995         * basic.cs: Add regression test.
7996
7997 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
7998
7999         * inssel.brg basic.cs: Revert previous change to fix build.
8000
8001         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
8002         platforms.
8003         
8004         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
8005
8006         * basic.cs: Add new regression test.
8007
8008 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
8009
8010         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
8011         many arguments.
8012
8013 2007-03-16  Neale Ferguson <neale@sinenomine.net>
8014
8015         * cpu-s390x.md: Correct length of break instruction.
8016
8017 2007-03-16  Neale Ferguson <neale@sinenomine.net>
8018
8019         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
8020         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
8021
8022 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
8023
8024         * *.c: Begin WIN64 port.
8025         * mini.c:  Use correct register in profiler.
8026         * mini-amd64.c: No inline assembly on Win64.
8027         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
8028         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
8029         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
8030         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
8031         mono_arch_ip_from_context for Win64.
8032         
8033         Contributed under MIT/X11 license.
8034
8035 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
8036
8037         * exceptions-amd64.c (seh_handler): Ditto.
8038
8039         * exceptions-x86.c (seh_handler): Fix a memory leak.
8040
8041 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
8042
8043         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
8044         mini-s390x.c: fixed peephole optimizations to deal
8045         correctly with 1 and 2 byte reload avoidance.
8046
8047 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
8048
8049         * cpu-s390.md, cpu-s390x.md: update localloc length.
8050
8051 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8052
8053         * cpu-g4.md: added missing descriptions.
8054
8055 2007-03-14  Miguel de Icaza  <miguel@novell.com>
8056
8057         *  Makefile.am: Add support so the tail tests are not executed on
8058         PowerPC as that is a known limitation of the PowerPC port.
8059
8060 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
8061
8062         * runmdesc.bat:  Move to msvc directory.
8063         
8064 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
8065
8066         * runmdesc.bat:  Run executable that was produced by the current
8067         target and sent via an argument.
8068         
8069 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
8070
8071         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
8072         #81102.
8073
8074         * generics.2.cs: Add regression test.
8075
8076 2007-03-09  Wade berrier  <wberrier@novell.com>
8077
8078         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
8079
8080 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
8081
8082         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
8083         AOT code depends on this.
8084
8085 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
8086
8087         * mini.c: more precise tracking of types in the eval stack
8088         (part of fix for bug #81044).
8089
8090 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
8091
8092         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
8093
8094         * aot-compiler.c (encode_patch): Remove an obsolete comment.
8095
8096 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
8097
8098         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
8099
8100         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
8101
8102 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
8103
8104         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
8105         a pointer on 64 bit systems. Fixes #80190.
8106
8107         * iltests.il: Add new regression test.
8108
8109 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8110
8111         * mini.c: inline a constant for Environment.IsRunningOnWindows.
8112
8113 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
8114
8115         * trace.c: Remove an erroneous alignemnt check when tracing.
8116           Fixes --trace on OSX86.
8117
8118 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8119
8120         * mini-$(arch).h: initialize SP in context for all the archs.
8121
8122 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
8123
8124         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
8125         regressions in the thread tests.
8126
8127 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
8128
8129         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
8130         - fixed implementation of LOCALLOC opcode
8131         - implemented non-un compare for floats
8132         - code cleanup
8133         - implementation of FDIV and CKFINITE opcodes
8134         - fixes for latest mono updates
8135         - additional arch opcodes
8136
8137 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8138
8139         * Makefile.am: simplify and merge rules for cross-compilation.
8140
8141 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
8142
8143         * local-propagation.c: Actually *apply* the fix for bug 80591...
8144
8145 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8146
8147         * mini-exceptions.c: backuot part of the last change
8148         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
8149
8150 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
8151         * inssel.brg: Fix bug 59286.
8152
8153
8154 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
8155
8156         * mini-exceptions.c: patch from Zoltan to correctly check for
8157         stack boundaries (using the stack register, not the frame register),
8158         fixes bugs #80724, #79717.
8159
8160 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
8161
8162         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
8163         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
8164
8165         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
8166         presence of frame pointer elimination.
8167
8168 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
8169         
8170         * mini-x86.h: NetBSD UCONTEX_REG defines.
8171
8172 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
8173
8174         * inssel-amd64.brg: Fix amd64 build.
8175
8176 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
8177
8178         * mini.h: remove extern to workaround what looks likes gcc bug 26905
8179         on amd64.
8180
8181 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
8182
8183         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
8184         ends.
8185
8186         * mini-<ARCH>.c: Use mono_is_regsize_var ().
8187
8188 2007-01-30 Mark Mason <mason@broadcom.com>
8189
8190            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
8191            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
8192            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
8193            beginning support for CEE_JMP [not quite working yet]
8194            * tramp-mips.c: LMF handling now works
8195         
8196 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
8197
8198         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
8199
8200         * mini.h (NULLIFY_INS): New macro.
8201
8202 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8203
8204         * mini.c: statistical profiler fix for windows, patch
8205         from Tor Lillqvist (tml@novell.com).
8206
8207 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
8208         * local-propagation.c: Fix bug 80591.
8209
8210 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8211
8212         * Makefile.am: put back the --export-dynamic option as with
8213         the previous gmodule flags (thanks to Robert Jordan).
8214
8215 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
8216
8217         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
8218
8219         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
8220         simplify and speed up the local register allocator. Also rename some fields
8221         like iassign->vassign.
8222         
8223         * regalloc.c: Remove some functions which are no longer used since their
8224         inlined version is in mini-codegen.c.
8225         
8226         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
8227
8228         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
8229
8230 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
8231
8232         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
8233         narrowing. Fixes #80622.
8234
8235         * iltests.il: Add new regresssion test. 
8236
8237 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8238
8239         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
8240         debug-debugger.c, debug-debugger.h: warning fixes.
8241         * driver.c: updated copyright year and made it fit in one line.
8242
8243 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
8244
8245         * aot-runtime.c: updated to use mono-dl instead of gmodule.
8246
8247 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
8248
8249         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
8250
8251         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
8252
8253         * iltests.il: Add new test for bug #80507.
8254
8255 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8256
8257         * mini-arm.h: use soft-float also on vfp for now.
8258
8259 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8260
8261         * mini.c: fix some more soft-float issues.
8262
8263 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
8264
8265         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
8266
8267 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
8268         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
8269         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
8270         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
8271
8272 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
8273
8274         * mini-arm.c: typo fix.
8275
8276 2007-01-23  Neale Ferguson <neale@sinenomine.net>
8277
8278         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
8279
8280 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
8281
8282         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
8283         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
8284
8285         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
8286
8287         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
8288
8289         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
8290         
8291         * inssel.brg: Fix a warning.
8292
8293         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
8294
8295         * abcremoval.c ssa.c ssapre.c: Update after this change.
8296         
8297         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
8298
8299         * dominators.c (df_set): Use mono_bitset_union_fast.    
8300
8301 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8302
8303         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
8304         mini-codegen.c: reduce relocations and memory usage for the cpu
8305         description.
8306
8307 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
8308
8309         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
8310
8311         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
8312         to reduce their size.
8313
8314 2007-01-19 Mark Mason <mason@broadcom.com>
8315
8316         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
8317         * mini-mips.c: more configuration macros, support long conditional branches, additional
8318         asserts, fix epilog instrumentation.
8319         * mini-mips.h: use standard stack walk
8320         * cpu-mips.md: increase size of div, rem and conditional branches
8321         
8322 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
8323
8324         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
8325         to cpu spec data.
8326
8327 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
8328
8329         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
8330         (compile_method): Ditto.
8331
8332         * aot-runtime.c (decode_klass_info): Ditto.
8333
8334         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
8335         needed by the code generated by inssel.brg. Also fix a warning.
8336
8337 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
8338
8339         * mini.c: deal with enums that become genericinsts by
8340         being nested in a generic class (bug #79956).
8341
8342 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8343
8344         * mini.c: match the generic definition to check for
8345         private access with generic types (bug #78431).
8346
8347 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
8348
8349         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
8350         to make life easier for people cross-compiling that insist on not
8351         using scratchbox.
8352
8353 2007-01-17 Mark Mason <mason@broadcom.com>
8354
8355         * inssel-long.brg: patch to deal with mips missing flags
8356         * inssel-long32-mips.brg: implement overflow checks
8357         * insset-mips.brg: implement overflow checks
8358         * mini-mips.h: implement conditional exception handling
8359         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
8360           Remove unused code, minor cleanups.
8361         * exceptions-mips.c: minor cleanups
8362         * mini-ops.h: add mips conditional exception ops
8363         * cpu-mips.md: add mips conditional exception ops
8364
8365         
8366 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8367
8368         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
8369         to deal with mips missing of flags.
8370
8371 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8372
8373         * exceptions-ppc.c: execute fault handlers.
8374
8375 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
8376
8377         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
8378
8379 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
8380
8381         * mini.c: handle also floating point values in initialize_array.
8382
8383 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8384
8385         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
8386         array initialization and make it conditional on the intrins option.
8387
8388 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8389
8390         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
8391         relocations and put the patch info names close to the enum definition.
8392
8393 2007-01-15 Mark Mason <mason@broadcom.com>
8394
8395         * basic.cs, exceptions.cs: break up large tests to increase debugability.
8396
8397 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8398
8399         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
8400
8401 2007-01-12  Raja R Harinath  <rharinath@novell.com>
8402
8403         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
8404
8405 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
8406
8407         * Makefile.am: distribute the mips sources.
8408
8409 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8410
8411         * mini-codegen.h: handle bug #80489 here, by excluding ecx
8412         directly.
8413
8414 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
8415
8416         * cpu-x86.md: back out for now as this triggers other regressions.
8417
8418 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8419
8420         * cpu-x86.md: force src1 and dest regpair for long shift instructions
8421         to eax:edx, so ecx can't get allocated to them (bug #80489).
8422
8423 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
8424
8425         * mini.c, mini-exceptions.c: enabled running fault handlers
8426         (bug #80469).
8427
8428 2007-01-03  Miguel de Icaza  <miguel@novell.com>
8429
8430         * driver.c: If nothing fail, do not use the string "failed",
8431         because it makes it very annoying to view test result logs on the
8432         web. 
8433
8434 2006-12-30  Miguel de Icaza  <miguel@novell.com>
8435
8436         * debug-debugger.c (mono_debugger_main): Rename "main" to
8437         "main_method" to prevent a warning.
8438
8439         Remove a warning for unused field.
8440
8441 2006-12-28  Martin Baulig  <martin@ximian.com>
8442
8443         * debug-debugger.c
8444         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
8445
8446 2006-12-22  Martin Baulig  <martin@ximian.com>
8447
8448         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
8449         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
8450         seperate `.mdb_debug_info' section, so we can access it from the
8451         debugger even if the binary is stripped.
8452
8453         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
8454         from the `.mdb_debug_info' here to prevent the linker from
8455         removing that section.
8456
8457         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
8458         mdb-debug-info64.s.
8459
8460 2006-12-19  Robert Jordan  <robertj@gmx.net>
8461
8462         * mini-x86: enable the code to return small structures in
8463         registers for FreeBSD as well. Fixes bug #80278.
8464         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
8465
8466 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8467
8468         * mini-x86.c: align the stack when calling the profiler
8469         function instrumenting the prolog (on OSX).
8470
8471 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
8472
8473         * mini.c: emit a break opcode where Debugger.Break () is called.
8474
8475 2006-12-13  Miguel de Icaza  <miguel@novell.com>
8476
8477         * mini.c (mono_method_to_ir): Provide useful information on this
8478         assert, to prevent others from debugging like I did.
8479
8480 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8481
8482         * mini.c: enable code which was incorrectly commented
8483         (bug #80235).
8484
8485 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8486
8487         * mini-x86.c: enable on OSX, too, the code to return small
8488         structures in registers.
8489
8490 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
8491
8492         * mini-x86.c: remove the use of the dynamic code manager here, too.
8493
8494 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
8495
8496         * mini.h, debug-debugger.c, tramp-*.c: fixed 
8497         mono_debugger_create_notification_function() to use
8498         mono_global_codeman_reserve () instead of a dynamic code manager.
8499
8500 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
8501
8502         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
8503         ves_array_element_address() jit icall and use a generated
8504         managed method instead (which is about 4 times faster for a rank 3
8505         array access).
8506
8507 2006-11-29  Mark Mason  <mason@broadcom.com>
8508
8509         * basic-calls.cs: additional tests for passing
8510         structures as function arguments.
8511
8512 2006-11-29  Mark Mason  <mason@broadcom.com>
8513
8514         * mini-mips.h: disable custom exception handling
8515         * mini-mips.c: throw/rethrow should use jalr to call
8516         exception stubs.  Fixed bug with passing structures
8517         by value. More support for tracing floating point
8518         functions.
8519
8520 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8521
8522         * mini.c: fixed typo in the soft-float ldind.r4 handling
8523         (bug #80086).
8524
8525 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8526
8527         * mini.c, mini.h, driver.c: added --runtime command line
8528         option to select a different runtime than the autodetected one.
8529         * jit.h: added API for embedders to initialize with a specific
8530         runtime version.
8531
8532 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
8533
8534         * mini.c: handle also boxing of r4 values (bug #80024).
8535
8536 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
8537
8538         * mini-ppc.c: force indirect calls until we reserve
8539         enough address space for all the generated code.
8540
8541 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
8542
8543         * exceptions-arm.c: workaround bugs in the libc definition
8544         of struct ucontext.
8545
8546 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
8547
8548         * inssel.brg: fixes from me and Mark Mason.
8549
8550 2006-11-23  Dick Porter  <dick@ximian.com>
8551
8552         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
8553         semaphore display now we've fixed the initial value
8554
8555 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8556
8557         * inssel.brg: partially revert the last change to fix the build.
8558
8559 2006-11-21  Mark Mason  <mason@broadcom.com>
8560
8561         * inssel.brg: Add and use compare-and-branch macros to support
8562         architectures that do not have condition code registers (ie. MIPS).
8563         * *-mips.{c,brg,md}: Fix copyright statements
8564
8565 2006-11-20  Mark Mason  <mason@broadcom.com>
8566
8567         * Makefile.am: remove mini-codegen.c from list of MIPS sources
8568         * mini.c: Allow GET_CONTEXT to be specified by the arch port
8569         * mini.h: Added declaration for mono_print_ins()
8570         * mini-codegen.c: added ins_spec initializer for MIPS
8571         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
8572         vreg to be virtual and hreg to be non-virtual.
8573         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
8574         is not yet working/implemented correctly.
8575         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
8576         non-static, fixup calls to print_ins() from other parts in the file.
8577
8578 2006-11-20  Mark Mason  <mason@broadcom.com>
8579
8580         * basic-calls.cs: added tests for passing structures as arguments
8581         to calls.
8582
8583 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
8584
8585         * inssel-long32.brg: optimize signed division by power of two.
8586
8587 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
8588
8589         * mini-arm.c: added support for interworking with thumb code
8590         (mono must be still be built using the ARM instruction encoding).
8591
8592 2006-11-19  Miguel de Icaza  <miguel@novell.com>
8593
8594         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
8595         verifier has different rules for it.   Fixes a few verifier issues
8596         in the test suite.
8597
8598         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
8599         at the end, so people know what happened.
8600
8601 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
8602
8603         * brach-opts.c: in optimize_exception_target() make sure we
8604         are in a catch clause (fixes bug #79871).
8605
8606 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8607
8608         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
8609         more soft-float support fixes.
8610
8611 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
8612
8613         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
8614         that are passed half on the stack and half in registers.
8615
8616 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
8617
8618         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
8619         more mips integration work from Mark E Mason 
8620         <mark.e.mason@broadcom.com>.
8621
8622 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8623
8624         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
8625         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
8626         tramp-mips.c: added sources for the mips port, not
8627         integrated in the build yet. Contributed by
8628         Mark E Mason <mark.e.mason@broadcom.com>.
8629
8630 2006-11-14  Neale Ferguson <neale@sinenomine.net>
8631
8632         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
8633
8634 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8635
8636         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
8637         put the soft-float rules in its own file since it seems to
8638         break s390 compilation.
8639
8640 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8641
8642         * mini-arm.c: fixed wrnings.
8643
8644 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
8645
8646         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
8647         inssel-arm.brg: ARM support for soft-float.
8648
8649 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8650
8651         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
8652         loads and stores of 32 bit fp values.
8653
8654 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
8655
8656         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
8657
8658         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
8659         works. Fixes #79852 and #79463.
8660
8661 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8662
8663         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
8664         more soft-float support WIP and fixes.
8665
8666 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
8667
8668         * mini-arm.c: some VFP updates.
8669
8670 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
8671
8672         * mini-exceptions.c: 0 is a valid local var offset in some
8673         architectures, don't assert (bug #78508).
8674
8675 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
8676
8677         * exceptions-arm.c: fixed off by one error in stack walk code.
8678
8679 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
8680
8681         * mini.h, mini.c: more precise tracking of type load exceptions.
8682
8683 2006-11-03  Robert Jordan  <robertj@gmx.net>
8684
8685         * Makefile.am: [WIN32] Add monow.exe target.
8686         * driver.c: [WIN32] Don't detach the console when debugging.
8687         Fixes bug #79797.
8688         
8689 2006-10-30  Miguel de Icaza  <miguel@novell.com>
8690
8691         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
8692
8693 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
8694
8695         * aot-compiler.c (emit_method_info): Add a case missed earlier.
8696
8697         * driver.c (mini_regression): Fix --regression with AOT.
8698
8699         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
8700
8701 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
8702
8703         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
8704
8705         * mini-sparc.h: Don't use sigaction on sparc/linux.
8706
8707         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
8708
8709         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
8710
8711         * mini-exceptions.c: Add proper include files for getpid ().
8712
8713 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
8714
8715         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
8716         address instead of a MonoJitInfo* to avoid decoding the exception info for the
8717         method.
8718
8719         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
8720         name cache to reduce its size.
8721
8722         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8723
8724 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
8725
8726         * mini-x86.c: Save/restore the current LMF structure more efficiently using
8727         the mono_lmf TLS variable.
8728
8729         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
8730         trampoline lmf frames.  
8731
8732         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
8733
8734 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
8735
8736         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
8737         the mono_lmf TLS variable.
8738
8739         * mini-exceptions.c: Access the LMF structure through accessors.
8740
8741         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
8742         variable instead of in jit_tls->lmf.
8743
8744         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
8745         
8746         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
8747         trampoline lmf frames.
8748
8749         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
8750
8751 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
8752
8753        * mini.c trace.c mini-x86.c: Revert these too.
8754         
8755        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
8756        signature change.
8757
8758 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
8759
8760         * genmdesc.c: removed now dead code.
8761
8762 2006-10-09  Robert Jordan <robertj@gmx.net>
8763
8764         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
8765
8766 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
8767
8768         * mini.h: do not leave gaps in the opcode values.
8769
8770 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
8771
8772         * jit-icalls.h: flag functions as internal here, too.
8773
8774 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
8775
8776         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
8777         functions with the internal attribute.
8778
8779 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
8780
8781         * aot-compiler.c: fclose the file descriptor in the profile read loop.
8782
8783 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
8784
8785         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
8786         for soft-float.
8787
8788 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
8789
8790         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
8791         tail calls as on other platforms.
8792
8793         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
8794
8795         * iltests.il: Add a few tailcall tests.
8796
8797 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8798
8799         * driver.c: fix loop for old compilers (bug #79521).
8800
8801 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
8802
8803         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
8804
8805         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
8806
8807         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
8808         metadata without any code.
8809
8810         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
8811         more precise debugging information using gdb.
8812
8813 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
8814
8815         * inssel-ia64.brg: Make the helper methods static.
8816
8817 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8818
8819         * inssel-x86.brg: make the helper methods static.
8820
8821 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
8822
8823         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
8824
8825 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8826
8827         * mini.c: updates for monoburg changes.
8828         * inssel.brg: make a few helper functions static as they should.
8829
8830 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
8831
8832         * Makefile.am: Move mini-codegen.c to common_sources.
8833
8834 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8835
8836         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
8837         instructions.
8838         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
8839         mini-ppc.h: port to use the common local register allocator.
8840
8841 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8842
8843         * mini.h: Remove the comment too then.
8844
8845 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
8846
8847         * mini.h: put back backend.data which is to be used shortly and
8848         doesn't increase the size of MonoInst. If any 64 bit arch aligned
8849         pointers on 4 byte boundaries it'd have much bigger issues running
8850         and you can ifdef it out anyway.
8851
8852 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8853
8854         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
8855         MonoInst size by 4 bytes on 64 bit machines.
8856
8857 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
8858
8859         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
8860         replacement with more meaningful field names. Arch maintainers, please
8861         check the assigned names are good enough for your arch.
8862
8863 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8864
8865         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
8866         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
8867
8868 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8869
8870         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
8871         relocations and memory requirements, put the optimization flags
8872         definitions in their own file.
8873
8874 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
8875
8876         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
8877
8878         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
8879
8880 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
8881
8882         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
8883
8884 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
8885
8886         * inssel.brg: use the correct function to get the size of an item
8887         in an array, given an element class.
8888         * aot-compiler.c: do not access class->class_size directly.
8889
8890 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8891
8892         * mini.h, debug-mini.c: added a debugging function to print
8893         info about local variables and arguments in a jitted method.
8894
8895 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
8896
8897         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
8898
8899         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
8900
8901 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8902
8903         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
8904         inner and outer loops when passing vtypes.
8905
8906 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
8907
8908         * mini-ppc.c: take into account the cpu errata for cache flushing
8909         which caused some random errors (bug #79381).
8910
8911 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8912
8913         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
8914         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
8915
8916 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
8917
8918         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
8919         loaded.
8920
8921         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
8922         freebsd ports tree.
8923
8924         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
8925         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
8926
8927         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
8928         displacement.
8929
8930 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
8931
8932         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
8933
8934 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
8935
8936         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
8937         macro does not have to be changed during debugging.
8938
8939         * 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>.
8940
8941         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
8942
8943         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
8944         
8945         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
8946         MONO_ARCH_NO_EMULATE_MUL is defined.
8947
8948         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
8949
8950         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
8951
8952         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
8953
8954         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
8955         
8956 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
8957
8958         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
8959         stuff to mini-exceptions.c where it is used.
8960
8961         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
8962         setup code, the real one is in mini-exceptions.c.
8963
8964         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
8965         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
8966         some changes from the freebsd ports tree.
8967
8968         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
8969         constants.
8970         
8971         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
8972
8973 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
8974
8975         * mini.c: on Linux, check for /proc to be mounted
8976         (bug# 79351, novell bug#201204).
8977
8978 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
8979
8980         * mini.c: handle cases where pthread_attr_getstack() behaves
8981         incorrectly (bug #78096).
8982
8983 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
8984
8985         * mini-arm.c: support larger stack frames (bug #79272).
8986
8987 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
8988
8989         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
8990
8991         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
8992         tokens.
8993
8994         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
8995         mono_class_from_name () to find a class from its name.
8996
8997         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
8998
8999 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
9000
9001         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
9002
9003 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
9004
9005         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
9006
9007 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
9008
9009         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
9010         callinfo->trampoline.
9011
9012         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
9013         fixes #79271.
9014         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
9015         future.
9016
9017 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
9018
9019         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
9020
9021 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
9022
9023         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
9024         stats.method_trampolines, it is already done by the generic trampoline code.
9025
9026         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
9027         
9028 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
9029
9030         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
9031
9032         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
9033
9034         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
9035
9036         * mini.c (print_jit_stats): Print mscorlib mempool size too.
9037         
9038         * mini.c (print_jit_stats): Print new stats.
9039
9040         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
9041
9042 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
9043
9044         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
9045         Address on two dimensional arrays. Fixes #78729.
9046
9047         * mini.h (MonoCompile): Add a 'skip_visibility' field.
9048
9049         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
9050         a method.
9051
9052         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
9053
9054         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
9055         #79130.
9056         
9057         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
9058         a race condition.
9059         (mini_get_ldelema_ins): Ditto.
9060
9061 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
9062
9063         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
9064         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
9065         Fixes #79213.
9066
9067 2006-08-29 Neale Ferguson <neale@sinenomine.net>
9068
9069         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
9070         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
9071
9072         * exceptions-s390x.c: Cosmetic change.
9073
9074         * tramp-s390.c: Fix warning.
9075
9076         * cpu-s390.md: Correct length of mul_imm.
9077
9078 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
9079
9080         * aot-compiler.c: added binary writer with ELF backend
9081         implementation (only on Linux/x86 for now).
9082
9083 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
9084
9085         * Makefile.am: Don't run net 2.0 AOT tests.
9086
9087         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
9088         (mono_compile_assembly): Skip net 2.0 assemblies as well.
9089
9090         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
9091
9092 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9093
9094         * aot-compiler.c: simplified and refactored the asm-writing code
9095         to allow different backends.
9096
9097 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
9098
9099         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9100
9101         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
9102         little. Share patches of type TYPE_FROM_HANDLE as well.
9103
9104         * mini.c (mono_patch_info_equal): New helper function.
9105         (mono_patch_info_hash): Ditto.
9106
9107         * aot-compiler.c (emit_method_code): Fix s390 build.
9108
9109         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
9110         is not handled because it is stored as a flag and not as a type ctor. Fixes
9111         #79016.
9112
9113 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
9114
9115         * aot-compiler.c: Fix computation of GOT slot statistics.
9116         
9117         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
9118         Also remove support for not PIC AOT.
9119
9120         * mini.h: Bump AOT file format version.
9121
9122         * objects.cs: Add a test for #78990.
9123
9124         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
9125         (peter.dettman@iinet.net.au). Fixes #79087.
9126
9127         * basic-long.cs: Add a test for the above.
9128
9129 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
9130
9131         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
9132         
9133         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
9134         code somewhat.
9135
9136 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
9137
9138         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
9139         exceptions.
9140
9141 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
9142
9143         * mini.c: Don't verify COM proxy invoke calls
9144         
9145
9146 2006-08-10  Dick Porter  <dick@ximian.com>
9147
9148         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
9149         which process is holding semaphores locked.
9150
9151 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
9152
9153         * mini-ia64.c mini-amd64.c: Fix #79027.
9154
9155         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
9156
9157         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
9158
9159         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
9160         implicit arguments in a vararg call. Fixes #79027.
9161
9162 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
9163
9164         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
9165         (mono_get_array_new_va_signature): Ditto.
9166
9167 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
9168
9169         * aot-runtime.c: Call init_plt lazily.
9170
9171         * inssel-long.brg: Fix unsigned long->int conversion.
9172
9173         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
9174
9175         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
9176         that most data is now in the .rss/.data section.
9177
9178 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
9179
9180         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
9181
9182         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
9183
9184         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
9185
9186         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
9187
9188         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
9189         virtual call. Fixes #79010.
9190
9191         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
9192         and use the result as the this argument in the real call.
9193
9194         * generics.2.cs: Add a new test for #79010.
9195         
9196 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
9197
9198         * mini-x86.c: Fix a warning.
9199
9200         * aot-compiler.c: Add a bunch of statistics.
9201
9202         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
9203
9204 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
9205
9206         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
9207
9208 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
9209
9210         * 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>.
9211
9212 2006-07-13  Miguel de Icaza  <miguel@novell.com>
9213
9214         * mini.c (mono_method_to_ir): Obtain the original method in the
9215         CIL stream and use this to perform validation.
9216
9217         Fixed: #78816
9218
9219 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
9220
9221         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
9222         (mono_arch_call_opcode): Ditto.
9223
9224         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
9225         #78826.
9226
9227         * mini.c (mono_patch_info_dup_mp): New helper function.
9228         
9229         * aot-compiler.c (compile_method): Fix some of the memory allocated during
9230         compilation. Fixes #78827.
9231
9232 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
9233
9234         * declsec.c: Use original security informations for
9235           MONO_WRAPPER_MANAGED_TO_MANAGED.
9236
9237 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
9238
9239         * mini.c: Allow Com Interop methods/classes and
9240         don't verify COM wrapper calls
9241         
9242
9243 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
9244
9245         * inssel-long32.brg: Fix long->i4 checked conversion.
9246
9247         * exceptions.cs: Add a test for the above.
9248
9249 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
9250
9251         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
9252
9253         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
9254         leaks.
9255
9256         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
9257         #78775.
9258
9259 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
9260
9261         * mini.c: Fix solaris/x86 exception handling.
9262
9263         * Makefile.am: Get rid of $(ICU_LIBS).
9264
9265 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
9266
9267         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
9268         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
9269         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
9270
9271         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
9272
9273         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
9274         this function causes a SIGSEGV.
9275
9276 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
9277
9278         * mini.c: Remove unused solaris/x86 includes.
9279
9280 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
9281
9282         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
9283
9284 2006-06-20  Jb Evain  <jbevain@gmail.com>
9285
9286         * cpu-g4.md: fix max length of start_handler instruction.
9287
9288 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
9289         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
9290
9291 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
9292         * ssa.c: Fixed bug 78653 for SSA based deadce.
9293         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
9294         MonoInst.flags, used in SSA based deadce.
9295         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
9296         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
9297
9298 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
9299
9300         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
9301         it can end up using non executable memory on ppc64 systems
9302         running ppc32 userspace (fix from Johannes Berg).
9303
9304 2006-06-14  Dick Porter  <dick@ximian.com>
9305
9306         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
9307         4.1.1
9308
9309 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
9310         * mini.c: Made so that inline is locally disabled if it would
9311         trigger a .cctor, because too many apps depend on this behavior
9312         (which seems to be also the one of the MS CLR).
9313
9314 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
9315
9316         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
9317         No idea why this worked before.
9318
9319         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
9320         which branch to outer exception clauses since they could skip the
9321         inner finally clauses. Fixes #78633.
9322
9323         * exceptions.cs: Add a test for the above.
9324
9325         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
9326         Fixes #78629.
9327
9328         * iltests.il: Add a test for the above.
9329
9330 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
9331
9332         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
9333         after the end of a try bblock, to prevent asserts in mini_method_compile ().
9334
9335         * iltests.il: Add a test for the above.
9336
9337 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
9338
9339         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
9340         
9341         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
9342         methods as instrinsics.
9343
9344 2006-06-09  Wade Berrier <wberrier@novell.com>
9345
9346         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
9347         (simple-cee-ops.h ssapre-mini-ops.h)
9348
9349 2006-06-09  Neale Ferguson <neale@sinenomine.net>
9350
9351         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
9352         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
9353         instruction).
9354         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
9355         * cpu-s390x.md: Fix max. length values for a couple of instructions.
9356
9357 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
9358
9359         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
9360
9361 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
9362
9363         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
9364         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
9365         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
9366         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
9367         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
9368         of opcodes, so that bug 78549 should not happen again.
9369         * ssapre.c: Updated to use the renamed files.
9370
9371 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
9372
9373         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
9374         in OP_ATOMIC_EXCHANGE_I4.
9375
9376 2006-06-07  Wade Berrier <wberrier@novell.com>
9377
9378         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
9379         in mono_debugger_create_notification_function)
9380
9381 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
9382
9383         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
9384         
9385         * mini.c (type_from_stack_type): Disable some changes which do not
9386         seem to work.
9387
9388         * driver.c: Reenable opts.
9389
9390         * mini.h (MonoStackSlot): New structure to keep track of the verification state
9391         of the evaluation stack.
9392         
9393         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
9394         evaluation stack trace at entry to the bblock.
9395
9396         * mini.c (merge_stacks): New function to perform verification of stack merges.
9397         Turned off by default.
9398
9399         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
9400         STACK_MP.
9401         
9402 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
9403
9404         * local-propagation.c: Fixed bug 78549.
9405
9406 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
9407
9408         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
9409
9410 2006-06-02  Miguel de Icaza  <miguel@novell.com>
9411
9412         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
9413         tramp-arm.c, tramp-ia64.c
9414         (mono_debugger_create_notification_function): Update signature to
9415         new signature and use new protocol for creating the notification
9416         function.  
9417
9418         Should fix the build.
9419
9420 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
9421
9422         * exceptions-ppc.c (mono_jit_walk_stack)
9423         (ves_icall_get_frame_info): Fix the build
9424
9425 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
9426
9427         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
9428
9429 2006-05-31  Raja R Harinath  <rharinath@novell.com>
9430
9431         * il2tests.2.il: New file for generics CIL tests.  Add test for
9432         #78019.
9433         * Makefile.am: Update.
9434
9435         Fix #78019
9436         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
9437         to nullable types.
9438
9439 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
9440
9441         * aliasing.c: Fixed bug 78311.
9442
9443 2006-05-29  Martin Baulig  <martin@ximian.com>
9444
9445         * mini-exceptions.c (mono_find_jit_info): When computing the
9446         native offset, check whether we're actually inside the method's
9447         code; call mono_debug_print_stack_frame() to format the frame.
9448         (ves_icall_System_Exception_get_trace): Call
9449         mono_debug_print_stack_frame() to format the stack frame.
9450         (ves_icall_get_trace): Update to the new debugging API.
9451         (mono_jit_walk_stack_from_ctx): Likewise.
9452         (ves_icall_get_frame_info): Likewise.
9453
9454         * mini.c (get_method_from_ip): Use the new debugging API.
9455         (mono_print_method_from_ip): Likewise.
9456
9457         * exceptions-ppc.c
9458         (mono_jit_walk_stack): Use the new debugging API.
9459         (ves_icall_get_frame_info): Likewise.   
9460
9461 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
9462
9463         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
9464
9465 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
9466
9467         * mini.c: Added "limitator" to inline for debugging.
9468
9469 2006-05-24  Martin Baulig  <martin@ximian.com>
9470
9471         * debug-debugger.c (mono_debugger_init): Create a private,
9472         malloc()-based code manager for the notification function and
9473         intentionally leak it on exit.  This fixes the crash-on-exit race
9474         condition.
9475
9476         * tramp-amd64.c
9477         (mono_debugger_create_notification_function): Added
9478         `MonoCodeManager *' argument.
9479
9480         * tramp-x86.c
9481         (mono_debugger_create_notification_function): Added
9482         `MonoCodeManager *' argument.
9483
9484 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
9485
9486         * aliasing.c: Fixed 64 bit issue.
9487         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9488         default since all known bugs are fixed (one more time!).
9489
9490 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9491
9492         * mini.c: write barrier support.
9493
9494 2006-05-23  Martin Baulig  <martin@ximian.com>
9495
9496         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
9497         check at the top of the file.
9498
9499 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
9500
9501         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
9502         reverting changes without reason and without changelog entries.
9503
9504 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
9505
9506         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
9507         to a few opcodes. Fixes #78439.
9508
9509         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
9510         consistency with other archs.
9511
9512         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
9513
9514 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9515
9516         * debug-debugger.c: fix the build.
9517
9518 2006-05-17  Martin Baulig  <martin@ximian.com>
9519
9520         * debug-debugger.c
9521         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
9522         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
9523         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
9524         (debugger_attach): Call GC_mono_debugger_add_all_threads().
9525
9526 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
9527
9528         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
9529
9530 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
9531
9532         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
9533         MONO_TYPE_GENERICINST.
9534         
9535         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
9536         MONO_TYPE_GENERICINST.
9537
9538 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
9539
9540         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
9541         #78325.
9542
9543 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
9544
9545         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
9546         mempool.
9547         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
9548
9549 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
9550
9551         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
9552         mono_trace_cleanup ().
9553
9554         * iltests.il: Fix problem with the newly added test.
9555
9556         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
9557         due to register constraints, free up the previous hreg. Fixes #78314.
9558
9559         * iltests.il: Add new test for #78314.  
9560
9561         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
9562         Interlocked.Add. Fixes #78312.
9563
9564         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
9565         
9566 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
9567
9568         * inssel.brg (mini_emit_virtual_call): Fix a warning.
9569
9570 2006-05-05  Martin Baulig  <martin@ximian.com>
9571
9572         * debug-mini.c (mono_debug_open_block): New method.
9573
9574         * mini-amd64.c
9575         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9576         the beginning of each basic block.
9577
9578         * mini-x86.c
9579         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9580         the beginning of each basic block.
9581
9582 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9583
9584         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9585         default until I understand why they break the build on amd64.
9586
9587 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
9588
9589         * mini.c (mini_cleanup): Call mono_cleanup ().
9590
9591         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
9592         errors.
9593
9594 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9595
9596         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
9597         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9598         default since all known bugs are fixed, and I cannot reproduce bug
9599         77944... I'm asking Matt Hargett to test again after this commit.
9600
9601 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
9602
9603         * mini-codegen.c: Fixed typo that thrashed inline.
9604
9605 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
9606
9607         * dominators.c (compute_dominators): Avoid using a worklist since
9608         it is not correct in some cases. Instead, iterate over all bblocks as
9609         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
9610
9611 2006-04-28  Miguel de Icaza  <miguel@novell.com>
9612
9613         * mini.c (mono_jit_compile_method_inner): Use
9614         mono_prepare_exception_from_error that resets the value
9615         internally.
9616
9617 2006-04-27  Miguel de Icaza  <miguel@novell.com>
9618
9619         * mini.c: Move the mini_loader_error_to_exception to metadata. 
9620         
9621 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9622
9623         * aliasing.c: Fixed bug 78210.
9624
9625 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9626
9627         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9628         default until all their problems (or the ones they trigger) are fixed.
9629
9630 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
9631
9632         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
9633         
9634         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
9635         as loaded only after resolving patches since that could invoke the same method.
9636
9637         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
9638
9639         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
9640         functions.
9641
9642         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
9643         AOT loader.
9644
9645         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
9646         stack.
9647
9648         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
9649         made from AOT code through the PLT table.
9650
9651         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
9652         holding the plt offset when a call is made to the aot plt trampoline.
9653         
9654 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9655
9656         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
9657         amd64 AOT support.
9658
9659         * Makefile.am (common_sources): Fix build breakage.
9660
9661         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
9662         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
9663         intra-assembly calls if possible.
9664         
9665         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
9666
9667         * mini-trampolines.c: Handle PLT entries.
9668
9669         * mini.c: Avoid creating a GOT var for calls.
9670
9671         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
9672         from mscorlib code.
9673
9674         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
9675         from mscorlib code.
9676
9677         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
9678         AOT code.       
9679
9680         * mini.h: Bump AOT file format version.
9681         
9682         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
9683         covers more cases.
9684
9685 2006-04-25  Martin Baulig  <martin@ximian.com>
9686
9687         * driver.c: Disable copyprop, consprop and inline when running
9688         inside the debugger.
9689
9690 2006-04-25  Martin Baulig  <martin@ximian.com>
9691
9692         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
9693         with `get_current_thread' and added `detach'.
9694         (MonoDebuggerMetadataInfo): Added `thread_size',
9695         `thread_tid_offset', `thread_stack_ptr_offset' and
9696         `thread_end_stack_offset'.
9697
9698 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9699
9700         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
9701         aot-runtime.c.
9702
9703         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
9704         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
9705
9706         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
9707
9708         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
9709
9710         * aot.c: Add support for ADJUSTED_IID.  
9711
9712 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
9713
9714         * aot.c (emit_method_order): Don't align method_order_end.
9715
9716         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
9717         the interface ID changes.
9718
9719 2006-04-21  Dick Porter  <dick@ximian.com>
9720
9721         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
9722         cleaning up a thread.  Fixes the new part of bug 77470.
9723
9724 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
9725
9726         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
9727         to managed wrapper.
9728                      
9729 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
9730
9731         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
9732         
9733         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
9734         SIGSEGV. Fixes #78072.
9735
9736         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
9737         unregister our SIGABRT handler.
9738
9739 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
9740
9741         * mini.c: Disabled inline where it can alter the call stack in a
9742         way visible from managed code.
9743         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
9744         default.
9745
9746 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
9747
9748         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
9749         on other platforms. Fixes #78089.
9750
9751 2006-04-13  Martin Baulig  <martin@ximian.com>
9752
9753         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
9754         determine whether we're inside the debugger.
9755
9756         * debug-debugger.h
9757         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
9758
9759 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9760
9761         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
9762         handler clauses. Fixes #78024.
9763
9764         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
9765         in the CALL_MEMBASE opcodes. Fixes #78088.
9766         (mono_arch_get_vcall_slot_addr): Ditto.
9767
9768 2006-04-10  Martin Baulig  <martin@ximian.com>
9769
9770         * debug-debugger.c: The thread handling code has now been moved
9771         into ../metadata/threads.c.
9772
9773 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9774
9775         * driver.c (mono_main): Fix --with-gc=none build.
9776
9777         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
9778         (mono_spillvar_offset_float): Ditto.
9779         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
9780         hreg, not when its !global, since on ia64, there is a third category: stacked
9781         registers.      
9782
9783 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
9784
9785         * mini.c: set MonoInst->klass for load field address and a few other
9786         places.
9787
9788 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9789
9790         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
9791
9792 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
9793
9794         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
9795         the branch opt changes.
9796
9797 2006-04-06  Dick Porter  <dick@ximian.com>
9798
9799         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
9800         
9801         * wapihandles.c (mini_wapi_seminfo): 
9802         * driver.c (mono_main): Add semaphore info option
9803
9804 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
9805
9806         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
9807         branch optimization changes. Fixes #78009.
9808
9809 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9810
9811         * mini.c: ignore accessibility of methods in managed->native wrappers.
9812
9813 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
9814
9815         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
9816         
9817         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
9818
9819 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
9820
9821         * mini.c: Modify the branch optimizations to preserve the invariant that
9822         the entries inside the in_bb and out_bb arrays are unique.
9823         (mono_unlink_bblock): Avoid creation of new arrays.
9824
9825 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
9826
9827         * mini.c (mono_unlink_bblock): Fix regression caused by previous
9828         change (#77992).
9829
9830 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
9831
9832         * mini.c (optimize_branches): Remove the "optimizations" in
9833         the cbranch1/cbranch2 -> branch cases which were causing several
9834         problems in the past. Fixes #77986.
9835
9836 2006-03-31  Chris Toshok  <toshok@ximian.com>
9837
9838         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
9839         default optimizations :(
9840
9841 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
9842
9843         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
9844         branch.
9845
9846 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
9847
9848         * local-propagation.c: Added comments to structs and removed
9849         "Mono" prefixes from local tree mover types.
9850
9851 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
9852
9853         * Makefile.am (arch_sources): Define this for each architecture so 
9854         libmono_la_SOURCES is defined in one place.
9855
9856 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
9857
9858         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
9859         from handles/.
9860
9861 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
9862
9863         * driver.c: print the GC name supplied by configure.
9864
9865 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
9866
9867         * local-propagation.c: Added tree mover, and moved here all the
9868         local propagation code from mini.c
9869         * mini.c: Added support for treeprop, and moved all the local
9870         propagation code to local-propagation.c
9871         * mini.h: Added support for treeprop
9872         * driver.c: Added support for treeprop, enabled consprop, copyprop,
9873         treeprop, inline and deadce by default
9874         * Makefile.am: Added local-propagation.c
9875
9876 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
9877
9878         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
9879
9880 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
9881
9882         * debug-debugger.c: make it compile without the Boehm GC.
9883
9884 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
9885
9886         * mini.c: fixed issue with mismatch when an icall is registered
9887         with multiple names but same address.
9888
9889 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
9890
9891         * declsec.c, mini-exceptions.c: use write barrier to set reference
9892         fields of managed objects.
9893
9894 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9895
9896         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
9897         (can_access_internals): Fix a warning.
9898
9899         * mini.c (print_method_from_ip): Rename this to 
9900         mono_print_method_from_ip so it gets exported.
9901
9902         * trace.c: Deal with strings inside StringBuilder's containing garbage
9903         and fix memory leaks. Fixes #77848.
9904
9905 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9906
9907         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
9908         fixes #77787.
9909
9910 2006-03-16 Neale Ferguson <neale@sinenomine.net>
9911         
9912         * mini-s390.c: Remove OP_X86_TEST_NULL.
9913
9914 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
9915
9916         * mini.c: use the correct GetHashCode() for the moving collector.
9917
9918 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
9919
9920         * liveness.c: Regalloc spill cost tuning.
9921
9922 2006-03-15 Neale Ferguson <neale@sinenomine.net>
9923         
9924         * mini-s390x.h: Correct S390_LONG macro.
9925
9926         * mini-s390x.c: Cleanup unused code.
9927
9928 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
9929
9930         * jit-icalls.h: New file.
9931
9932         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
9933         icalls and include that instead of including jit-icalls.c.
9934
9935         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
9936         OP_X86 opcodes.
9937
9938 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
9939
9940         * mini.c: when checking for member accessibility, also check for
9941         friend assemblies and for explicit interface implementations.
9942
9943 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
9944
9945         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
9946
9947         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
9948
9949         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
9950         common cases are done first.    
9951
9952         * mini-ops.h: Only define platform specific opcodes on the given platform.
9953
9954         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
9955         branch.
9956         
9957 2006-03-14  Martin Baulig  <martin@ximian.com>
9958
9959         Revert Paolo's change from r57348:
9960
9961         * mini.h: don't use gboolean for bitfields.
9962         * mini.c: verifier changes for fields and methods accessibility.
9963
9964 2006-03-13  Neale Ferguson <neale@sinenomine.net>
9965
9966         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
9967
9968         * mini-s390x.c: Fix conv_r_un.
9969
9970         * cpu-s390, cpu-s390x.md: Fix lengths.
9971
9972 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
9973
9974         * mini.c: nested types have access to all the nesting
9975         levels, not just the enclosing types.
9976
9977 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
9978
9979         * mini.c: added a few more verification checks.
9980
9981 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
9982
9983         * liveness.c: Merge optimizations from the linear-il branch.
9984
9985 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
9986
9987         * mini-ia64.c (emit_call): Add a comment.
9988
9989         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
9990
9991         * tramp-ia64.c: Fix some warnings.
9992
9993 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
9994
9995         * mini.h: don't use gboolean for bitfields.
9996         * mini.c: verifier changes for fields and methods accessibility.
9997
9998 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
9999
10000         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
10001         lazy icall wrapper changes.
10002
10003         * dominators.c: Replace all the dominator algorithms with faster
10004         ones from the linear-il branch.
10005
10006         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
10007         the mempool.
10008
10009         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
10010         common cases are done first.
10011
10012         * mini-amd64.c: Fix some warnings.
10013
10014         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
10015         from the mempool.
10016
10017         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
10018         added code.
10019
10020         * mini.h: Add a missing prototype.
10021
10022 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
10023
10024         * mini.c: Compile icall wrappers lazily.
10025
10026         * mini-codegen.c: Use printf instead of g_print since its much faster.
10027
10028         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
10029         function.
10030
10031         * mini.c (optimize_branches): Cache the negative result from 
10032         remove_block_if_useless ().
10033
10034         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
10035         Also fix some bblock linking issues.
10036
10037         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
10038         assembly files.
10039
10040         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
10041
10042         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
10043         accessed fields first, for better cache behavior.
10044         
10045 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10046
10047         * mini.c: speedup IList<T> array accesses.
10048
10049 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
10050
10051         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
10052         inline_costs counter. Fixes #77190.
10053
10054 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
10055
10056         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
10057         trace messages. Fixes #77706.
10058
10059 2006-03-04  Martin Baulig  <martin@ximian.com>
10060
10061         * tramp-amd64.c, tramp-x86.c
10062         (mono_debugger_create_notification_function): Use
10063         mono_global_codeman_reserve() to allocate a buffer at runtime and
10064         return it.
10065
10066         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
10067
10068         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
10069         notification function at runtime and then call `initialize' in the
10070         `MONO_DEBUGGER__debugger_info' vtable.
10071
10072 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
10073
10074         * iltests.il: Fix a visibility problem.
10075
10076 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
10077
10078         * driver.c, mini.c: add hooks for the counters API.
10079
10080 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
10081
10082         * driver.c: show disabled options.
10083
10084 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10085
10086         * linear-scan.c: always use cost-driven selection.
10087
10088 2006-02-28  Raja R Harinath  <rharinath@novell.com>
10089
10090         * jit-icalls.c (helper_compile_generic_method): Revert change from
10091         2006-02-24.
10092
10093 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
10094
10095         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
10096
10097 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
10098
10099         * inssel.brg: style fixes, mostly to force the updated monoburg
10100         to run for people using svn.
10101
10102 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
10103
10104         * mini.c: match monoburg changes.
10105
10106 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10107
10108         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
10109         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
10110         declaration in the header file.
10111
10112 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
10113
10114         * helpers.c: reduce relocations and mem usage.
10115
10116 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
10117
10118         * mini.h, mini-codegen.c: disable logging features if
10119         requested by configure.
10120
10121 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
10122
10123         * mini.c: tiny verifier changes.
10124
10125 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10126
10127         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
10128         cpu-pentium.md: stack alignment changes for osx/x86,
10129         partially from Geoff Norton <gnorton@customerdna.com>.
10130
10131 2006-02-24  Raja R Harinath  <harinath@gmail.com>
10132
10133         * jit-icalls.c (helper_compile_generic_method): Update to changes
10134         in metadata/class.c.
10135
10136 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
10137         
10138         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
10139         
10140         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
10141         interface calls with large offsets.
10142
10143 2006-02-23  Raja R Harinath  <rharinath@novell.com>
10144
10145         * jit-icalls.c (helper_compile_generic_method): Document the
10146         special-case we depend on so that we can inflate the method twice
10147         with the same context with no bad side-effects.
10148
10149 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
10150
10151         * mini-x86.c, mini-amd64.c: fix for case when xen support
10152         is disabled.
10153
10154 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
10155
10156         * mini-x86.c, mini-amd64.c: generate code to access tls items
10157         in a faster way for Xen systems.
10158
10159 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
10160
10161         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
10162         updates and compilation fixes for the OSX/x86 port, mostly from
10163         Geoff Norton <gnorton@customerdna.com>.
10164
10165 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10166
10167         * inssel.brg: faster interface call implementation
10168         to sync with the interface_offsets MonoVTable changes.
10169
10170 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
10171
10172         * mini.c: more verification checks.
10173
10174 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
10175
10176         * mini.c: added a few more verification checks.
10177
10178 2006-02-17      Neale Ferguson <neale@sinenomine.net>
10179
10180         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
10181         facility on the processor and use it if available.
10182
10183 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10184
10185         * driver.c, aot.c, mini.c: throw exception if the IL code is
10186         invalid or unverifiable.
10187
10188 2006-02-17  Raja R Harinath  <rharinath@novell.com>
10189
10190         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
10191         m.StructField.
10192
10193 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
10194
10195         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
10196
10197 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10198
10199         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
10200         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
10201         handling of instantiated generic valuetypes.
10202
10203 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
10204
10205         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
10206         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
10207         instead.
10208
10209         * generics.2.cs: Revert the nullable reftypes tests.
10210
10211 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
10212
10213         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
10214         using __builtin_frame_address (1) as it doesn't work in the presence
10215         of optimizations. Hopefully fixes #77273.
10216
10217         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
10218         -> generics.cs change as it doesn't work with some automake versions.
10219
10220 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10221
10222         * mini.c: handle systems that sue a different way to
10223         retrieve the stack address of the current thread.
10224
10225 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
10226
10227         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
10228         it specially in the makefile.
10229
10230         * generics.2.cs: Add tests for nullable reference types.
10231
10232 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10233
10234         * mini.c: always handle the case when mono_jit_init()
10235         is called in a thread different from the main thread,
10236         confusing libgc (bug #77309).
10237
10238 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
10239
10240         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
10241
10242 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10243
10244         * mini.c: change optimize_branches () to use a single loop
10245         and introduce a new optimization to simplify some range checks.
10246
10247 2006-02-03  Martin Baulig  <martin@ximian.com>
10248
10249         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
10250         and merged with debugger_thread_manager_add_thread().
10251         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
10252         inform the debugger about the main thread.
10253
10254 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
10255
10256         * basic.cs: Add test for div.un/rem.un constant folding.
10257
10258 2006-02-03  Neale Ferguson <neale@sinenomine.net>
10259
10260         * cpu-s390x.md: correct int_xor_imm length
10261
10262 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
10263
10264         * generics.2.cs: New test for #77442.
10265
10266         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
10267         #77442.
10268
10269 2006-02-02  Martin Baulig  <martin@ximian.com>
10270
10271         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
10272         <mono/metadata/mono-debug-debugger.h>   
10273
10274         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
10275
10276 2006-02-02  Martin Baulig  <martin@ximian.com>
10277
10278         * debug-debugger.h: New header file for debug-debugger.c.
10279
10280         * debug-debugger.c: Big API cleanup; don't run the managed Main()
10281         function is a separate thread anymore; add support for attaching.
10282
10283 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
10284
10285         * tramp-x86.c: Fix a warning.
10286
10287 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
10288
10289         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
10290         on very large methods.
10291
10292         * aot.c (load_patch_info): Fix a warning.
10293
10294 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
10295
10296         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
10297         mini-ops.h: alu membase optimizations.
10298
10299 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
10300
10301         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
10302         to speedup StringBuilder.
10303
10304 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
10305
10306         * dominators.c (mono_compute_natural_loops): Fix detection of
10307         loop body start blocks.
10308
10309         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
10310
10311 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
10312
10313         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
10314         #75145.
10315
10316 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
10317
10318         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10319
10320 2006-01-25  Martin Baulig  <martin@ximian.com>
10321
10322         * debug-debugger.c: Moved the `MonoDebuggerManager' and
10323         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
10324         started to cleanup this file a little bit.
10325
10326 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
10327
10328         * mini.c: optimize a codepath frequently happening in generics code.
10329
10330 2006-01-23  Martin Baulig  <martin@ximian.com>
10331
10332         * Makefile.am: Only compile debug-debugger.c on supported platforms.
10333
10334         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
10335         functions directly.
10336
10337         * driver.c: debug-debugger.c is only available if
10338         `MONO_DEBUGGER_SUPPORTED' is defined.   
10339
10340 2006-01-23  Martin Baulig  <martin@ximian.com>
10341
10342         * debug-debugger.c: Only enable this on platforms where the Mono
10343         Debugger is working (x86 and x86_64).
10344
10345 2006-01-21  Martin Baulig  <martin@ximian.com>
10346
10347         The Mono Debugger is now using the normal `mono' instead of the
10348         `mono-debugger-mini-wrapper' when executing managed code.
10349
10350         * debug-debugger.c: New file; previously known as
10351         debugger/wrapper/wrapper.c.
10352
10353         * debug-mini.c (mono_init_debugger): Removed.
10354
10355         * driver.c (mono_main): Added new `--inside-mdb' command line
10356         argument which is used when running inside the debugger.
10357
10358 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
10359
10360         * liveness.c (mono_analyze_liveness): Remove some unused data
10361         structures.
10362
10363 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
10364
10365         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
10366
10367 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
10368
10369         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
10370         depends on implementation details of monobitset.
10371
10372         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
10373         Fixes #77271.
10374
10375 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
10376
10377         * liveness.c: Update after monobitset changes.
10378
10379 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
10380
10381         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
10382
10383 2006-01-11 Neale Ferguson <neale@sinenomine.net>
10384
10385         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
10386
10387         * mini-s390x.c: Remove warning messages.
10388
10389 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
10390
10391         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
10392
10393 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
10394
10395         * generics.2.cs: Add ldelem/stelem_any test.
10396
10397 2006-01-10 Neale Ferguson <neale@sinenomine.net>
10398
10399         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
10400
10401 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
10402
10403         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
10404         
10405 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
10406
10407         * generics.2.cs: Reenable vtype tests.
10408
10409         * inssel-x86.brg: Remove an icorrect valuetype rule.
10410
10411 2006-01-06 Neale Ferguson <neale@sinenomine.net>
10412
10413         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
10414         initial support for OP_ABS.
10415
10416 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10417
10418         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
10419
10420 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10421
10422         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
10423         conversion and implement LADD/LSUB.
10424
10425         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
10426         architectures.
10427
10428 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10429
10430         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
10431
10432         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
10433         architectures.
10434
10435 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10436
10437         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
10438         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
10439         (stack walk problem).
10440
10441 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
10442
10443         * aot.c (mono_aot_load_method): Fix a warning.
10444
10445 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10446
10447         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
10448
10449 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10450
10451         * iltests.il: Add test for #77148.
10452
10453         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
10454         #77148.
10455
10456 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10457
10458         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
10459
10460 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10461
10462         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
10463         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
10464
10465         * basic-long.cs: Add lconv-to-r4/r8 tests.
10466
10467 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10468
10469         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
10470
10471         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
10472         here as on other archs.
10473
10474 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10475
10476         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
10477
10478 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10479
10480         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
10481         
10482         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
10483
10484         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
10485         instrument_prolog; Add memory_barrier instruction.
10486
10487 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
10488
10489         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
10490
10491 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
10492
10493         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
10494
10495         * aliasing.c inssel.brg: Fix warnings.
10496
10497         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
10498         could skip initialization of some parts of memory.
10499
10500         * mini.c mini-ia64.c: Fix warnings.
10501
10502         * inssel-sparc.brg: Add an implementation of lneg which actually works.
10503
10504 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
10505
10506         * aliasing.c (mono_build_aliasing_information): Add a workaround for
10507         a crash seen on sparc.
10508
10509         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
10510         
10511         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
10512
10513 2005-12-21 Neale Ferguson <neale@sinenomine.net>
10514
10515         * mini-ops.h: Add s390_backchain instruction
10516
10517         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
10518
10519         * cpu-s390.md: Add s390_backchain instruction
10520
10521         * mini-s390.c: Significant ABI changes
10522
10523         * mini-s390.h: Cater for zero length structures
10524
10525 2005-12-20 Neale Ferguson <neale@sinenomine.net>
10526
10527         * mini-s390.c: ABI fixes
10528
10529         * inssel-s390.brg: Remove debug statements
10530
10531         * cpu-s390.md: Fix length of ATOMIC_xx operations
10532
10533 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
10534
10535         * basic-float.cs: Add float<->long conversion tests.
10536
10537 2005-12-16 Neale Ferguson <neale@sinenomine.net>
10538
10539         * mini-s390.c: Fix LOCALLOC processing.
10540
10541         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
10542
10543 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
10544
10545         * iltests.il: Add tests for some opcodes not covered by the other
10546         tests.
10547
10548 2005-12-15 Neale Ferguson <neale@sinenomine.net>
10549
10550         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
10551         register loading for Tail processing; Correct trace output.
10552
10553         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
10554
10555         * cpu-s390.md: Correct size of jmp instruction. 
10556
10557 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10558
10559         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
10560
10561 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10562
10563         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
10564           Bring s390 up to current level.
10565
10566 2005-12-12  Zltan Varga  <vargaz@gmail.com>
10567
10568         * generics.2.cs: Disable the newly added tests as they do not work yet.
10569         
10570         * generics.2.cs: Add valuetype tests.
10571
10572 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
10573
10574         * basic-long.cs: Add i4->u8 test.
10575
10576         * objects.cs: Add tests for JIT intrinsic.
10577
10578         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
10579         optimizations lost by a mistake.
10580
10581 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
10582
10583         * basic-long.cs: Remove a test moved to objects.cs.
10584
10585         * arrays.cs: Add more array tests.
10586
10587 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
10588
10589         * arrays.cs: Add new tests for multi-dimensional arrays.
10590
10591 2005-12-06  Raja R Harinath  <rharinath@novell.com>
10592
10593         * Makefile.am (test_sources2): Add generics.2.cs.
10594         (EXTRA_DIST): Add test_sources2.
10595
10596 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
10597
10598         Support for boxing and unboxing nullable types as well as the
10599         isinst operation on nullables, per the CLI ammendment.
10600
10601         * inssel.brg (CEE_ISINST): Special case for nullable
10602
10603         * mini.c (handle_unbox_nullable): new method
10604         (handle_box): Special case for nullable types
10605         (mono_method_to_ir): Call handle_unbox_nullable in correct
10606         places.
10607
10608         * generics.2.cs: New test suite
10609
10610         * Makefile.am: Support for regression tests with generics.
10611
10612 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
10613
10614         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
10615         allocated to registers. Fixes #76800.
10616
10617 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
10618
10619         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
10620
10621 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
10622
10623         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
10624         of platforms.
10625
10626 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
10627
10628         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
10629         objects.cs.
10630
10631         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
10632         
10633         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
10634 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
10635
10636         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
10637         single precision before storing to a single precision location.
10638
10639 2005-11-28  Raja R Harinath  <rharinath@novell.com>
10640
10641         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
10642
10643 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
10644
10645         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
10646         correct files.
10647
10648         * basic.cs: Remove test_0_byte_compares test which was moved to
10649         objects.cs a long time ago.
10650
10651 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
10652
10653         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10654
10655 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
10656
10657         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
10658         handlers are called.
10659
10660         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
10661         throwing code.
10662
10663          * mini-ia64.c: Add support for the throw->branch exception 
10664         optimization.   
10665
10666         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
10667
10668 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10669
10670         * mini.c: Enabled "fastpath" deadce :-)
10671         
10672 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10673
10674         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
10675         alias analysis pass to support it.
10676         * mini.h: Likewise.
10677         * ssa.c: Likewise.
10678         * liveness.c: Likewise (liveness computation can use aliasing
10679         information to be more accurate).
10680         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
10681         moreover made so that "--compile-all" uses the given optimization
10682         flags and not the default ones.
10683         * aliasing.c: Alias analysis (new file).
10684         * aliasing.h: Likewise.
10685         * Makefile.am: added "aliasing.c" and "aliasing.h".
10686         
10687 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
10688
10689         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
10690         OP_L opcodes.
10691
10692 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
10693
10694         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
10695         fp >= end_of_stack exit condition, as it is not needed, and it might
10696         become true for fp eliminated frames.
10697
10698 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10699
10700         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
10701         coded offsets.
10702
10703 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
10704
10705         * mini-arm.c: fixed alignment of doubles/longs to match
10706         the C ABI (bug #76635).
10707
10708 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
10709
10710         * aot.c: fix compilation with --enable-minimal=aot.
10711
10712 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
10713
10714         * mini-arm.c: fixed compatibility with the new
10715         floating point emulator package for compares.
10716
10717 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
10718
10719         * mini.c : reverted sig->pinvoke changes (r51396-51397).
10720
10721 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
10722
10723         * mini-exceptions.c (print_stack_frame): Output to stderr.
10724         (mono_handle_native_sigsegv): Ditto.
10725
10726 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10727
10728         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
10729         OP_LCONV_TO_OVF_I implementation.
10730
10731         * mini-amd64.c: Add support for the throw->branch exception 
10732         optimization.
10733
10734         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
10735         when the catch clause catches a more general exception, i.e. Object.
10736
10737 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
10738
10739         * cpu-ia64.md: Remove unused opcodes.
10740
10741         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
10742         specific defines for architectures defining USE_SIGACTION.
10743
10744         * mini-ia64.c: Fix some warnings.
10745
10746         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
10747         version seemed to skip a frame.
10748
10749 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10750
10751         * mini.c: Clean up the usage of sig->pinvoke flag. Now
10752         only calls which are made to native code use this flag.
10753
10754 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10755
10756         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
10757         varargs methods as well.
10758         
10759         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
10760         which have save_lmf set. Reorganize methods prologs a bit.
10761
10762         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
10763         debugger to the proper place.
10764
10765 2005-10-29  Martin Baulig  <martin@ximian.com>
10766
10767         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
10768         when running inside the debugger until the debugger has support
10769         for it.
10770
10771 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10772
10773         * mini.h: Fix a warning.
10774
10775 2005-10-24  Miguel de Icaza  <miguel@novell.com>
10776
10777         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
10778         we expose publicly, this returns the string.
10779
10780 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
10781
10782         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
10783         with fp elimination.
10784
10785 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10786
10787         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
10788         native stacktrace using the glibc 'backtrace' function if available.
10789
10790 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
10791
10792         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
10793
10794         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
10795         handle SIGSEGVs received while in native code.
10796
10797         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
10798         code, call mono_handle_native_sigsegv which will abort the runtime
10799         after printing some diagnostics, instead of converting it into a
10800         confusing NullReferenceException.
10801
10802 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10803
10804         * cpu-pentium.md: Remove unused opcodes.
10805
10806 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
10807
10808         * mini-amd64.h (MonoLMF): Add rsp field.
10809
10810         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
10811         the lmf too.
10812
10813 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
10814
10815         * mini-codegen.c (get_register_spilling): Fix some warnings.
10816
10817 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
10818
10819         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
10820         elimination during exception handling. Enable fp elimination by
10821         default.
10822
10823         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
10824         elimination.
10825
10826 2005-10-16  Martin Baulig  <martin@ximian.com>
10827
10828         * mini-exceptions.c
10829         (mono_debugger_run_finally): New public method for the debugger.
10830
10831 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10832
10833         * debug-mini.c (mono_debug_init_method): Fix warning.
10834
10835         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
10836         the 'exname' parameter const to fix some warnings.
10837
10838 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
10839
10840         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
10841         introduced by the previous patch.
10842
10843 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
10844
10845         * basic-float.cs: Add test for precision of float arithmetic.
10846
10847         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
10848         when loading/storing single values from/to memory.
10849
10850         * mini.c (mono_jit_compile_method_with_opt): Create the function
10851         pointers in the correct domain.
10852
10853 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10854
10855         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
10856         introduced by previous patch.
10857         
10858         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
10859         when out_filter_idx is NULL.
10860
10861         * mini-exceptions.c: Don't run filter clauses twice during exception
10862         handling. Fixes #75755.
10863
10864 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10865
10866         * aot.c: Add support for ldflda wrappers.
10867
10868         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
10869         #75902.
10870
10871 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
10872
10873         * mini.c, mini.h: do not consider exception handlers blocks when
10874         setting up interface variables.
10875
10876 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
10877
10878         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
10879
10880 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
10881
10882         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
10883         causes a regression.
10884
10885         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
10886
10887 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
10888
10889         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
10890         of the OP_P definitions.
10891
10892         * TODO: Add a proposal for dealing with the CEE/OP mess.
10893
10894         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
10895         optimizations from the x86 port.
10896
10897         * cpu-amd64.md: Ditto.
10898
10899         * basic.cs basic-long.cs: Add tests.
10900
10901 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
10902
10903         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
10904         Patrik Torstensson's implementation of my exception-handling
10905         optimization idea, when the exception object is not used
10906         (bug #62150).
10907
10908 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
10909
10910         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
10911         of the mul_imm optimizations from the old jit.
10912
10913 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
10914
10915         * mini.c, liveness.c: patch by Patrik Torstensson and
10916         Zoltan Varga to improve performance in methods with
10917         exception clauses.
10918
10919 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10920
10921         * driver.c: Remove 'Globalization' entry from --version.
10922
10923 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
10924
10925         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
10926         there is a profiler interested in JIT events.
10927
10928         * aot.c: Load profile files produced by the AOT profiling module, and
10929         reorder methods based on the profiling info. Add a 'method_order' table
10930         to the AOT file to make mono_aot_find_jit_info work with the reordered
10931         methods.
10932
10933         * mini.h: Bump AOT file version info.
10934
10935 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
10936
10937         * mini-arm.h: work around what looks like a gcc bug when optimizations
10938         are enabled.
10939
10940 2005-09-28  Raja R Harinath  <rharinath@novell.com>
10941
10942         * Makefile.am (AM_CFLAGS): Don't use += to append inside
10943         conditionals.  Use ...
10944         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
10945
10946 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
10947
10948         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
10949         to determine the amount of memory to copy when passing valuetypes.
10950
10951         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
10952         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
10953
10954 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
10955
10956         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
10957         information about aot.
10958
10959 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
10960
10961         * *.c: Replace the use of {Enter,Leave}CriticalSection with
10962         macros. This will allow a deadlock debugger to easily be plugged
10963         in.
10964
10965 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
10966
10967         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
10968
10969 2005-09-27  Raja R Harinath  <rharinath@novell.com>
10970
10971         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
10972         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
10973         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
10974         ($(arch_built)) [CROSS_COMPILING]: Error out.
10975
10976 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
10977
10978         * aot.c: Add support for the no_special_static flag for classes.
10979
10980 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10981
10982         * Reapply reverted patches.
10983
10984         * *: Revert r50174 as well.
10985
10986         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
10987
10988 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10989
10990         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
10991
10992 2005-09-23  Miguel de Icaza  <miguel@novell.com>
10993
10994         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
10995         part of the SIG_HANDLER_SIGNATURE.  
10996
10997 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10998
10999         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
11000         statistics.
11001
11002         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
11003         introduced by previous patch.
11004
11005 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
11006
11007         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
11008         saved registers too.
11009
11010         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
11011         upon the information returned by get_call_info ().
11012         
11013         * mini-x86.c (add_float): Fix stack size calculation.
11014         (mono_arch_call_opcode): Rewrite this so it works based up the
11015         information returned by get_call_info ().
11016         (mono_arch_get_this_vret_args): Ditto.
11017
11018 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
11019
11020         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
11021         in cinfo to determine the registers which need to be used.
11022
11023 2005-09-20  Miguel de Icaza  <miguel@novell.com>
11024
11025         * driver.c (mono_main): Add --server and --desktop flags. 
11026
11027 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
11028
11029         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
11030         registers as global registers.
11031
11032         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
11033         longer needed with the new register allocator.
11034
11035         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
11036
11037         * cpu-ia64.md: Remove unused opcodes.
11038         
11039         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
11040         
11041 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
11042
11043         * cpu-amd64.md: Remove unused opcodes.
11044
11045         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
11046         needed with the new register allocator.
11047
11048         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
11049         reg-reg moves.
11050
11051 2005-09-16  Raja R Harinath  <rharinath@novell.com>
11052
11053         * Makefile.am (check-local): Don't invoke semdel-wrapper.
11054
11055 2005-09-16  Martin Baulig  <martin@ximian.com>
11056
11057         * exceptions-amd64.c
11058         (throw_exception): Don't call mono_debugger_throw_exception() if
11059         we're a rethrow - see the FIXME in the code.
11060
11061 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
11062
11063         * mini.c (mono_init_exceptions): This only works on some architectures.
11064         
11065 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
11066
11067         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
11068         on ia64.
11069
11070         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
11071
11072         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
11073         now in mini-exceptions.c.
11074
11075 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
11076
11077         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
11078         now in mini-exceptions.c.
11079
11080 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
11081
11082         * exceptions-x86.c: Applied patch from Patrik Torstensson 
11083         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
11084
11085         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
11086         code into mini-exceptions.c. Add some assertions to it.
11087
11088 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
11089
11090         * aot.c (emit_section_change): Applied patch from "The Software Team" 
11091         (<software@solmersa.com>). Fix as errors on windows.
11092
11093 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
11094
11095         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
11096         method info into the LMF.
11097
11098 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11099         
11100         * mini-ia64.c: Add proper unwind info for method epilogs.
11101
11102         * exceptions-ia64.c: Add some code to help debugging.
11103         
11104         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
11105
11106         * mini-exceptions.c: Fix warning.
11107
11108 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
11109
11110         * mini.c: Really fix build.
11111
11112         * mini-x86.c mini-amd64.c: Fix build.
11113
11114 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11115
11116         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
11117
11118         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
11119         some Interlocked methods as intrinsics.
11120
11121         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
11122         for Thread methods as well.
11123
11124         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
11125
11126         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
11127
11128         * mini-ia64.c mini-x86.c mini-amd64.c 
11129         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
11130         OP_MEMORY_BARRIER.
11131         
11132         * mini.c (mono_init_exceptions): Fix build breakage.
11133
11134 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
11135
11136         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
11137         of instructions. Use the new ia64_unw_op macros for emitting unwind
11138         info.
11139
11140         * mini.c (mono_init_exceptions): Initialize exception handling
11141         related trampolines at startup.
11142
11143 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
11144
11145         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
11146
11147 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
11148
11149         * mini.c: Handle type loading errors gracefully during compilation and
11150         throw the appropriate exception.
11151
11152 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
11153
11154         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
11155         for the mono binary.
11156
11157 2005-09-09  Martin Baulig  <martin@ximian.com>
11158
11159         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
11160         the release.
11161
11162 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
11163
11164         * mini-arm.h: use emulation for conv.r.un for the release.
11165
11166 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
11167
11168         * mini-arm.c, objects.cs: more fixes and tests for them.
11169
11170 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
11171
11172         * mini-arm.c: align structures to at least 4 bytes to be able
11173         to keep our current optimized memcpy.
11174
11175 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
11176
11177         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
11178
11179 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11180
11181         * mini.c: ignore SIGPIPE.
11182
11183 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
11184
11185         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
11186
11187         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
11188
11189 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
11190
11191         * mini.h: Add prototype for mono_allocate_stack_slots_full.
11192
11193 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
11194
11195         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
11196         exception handling support.
11197         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
11198         patch by Brian Koropoff <briank@marakicorp.com>).
11199
11200 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
11201
11202         * mini.c: revert another 'optimization' which breaks when
11203         items on the eval stack need to be saved at a basic block end
11204         (bug #75940).
11205
11206 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
11207
11208         * jit-icalls.c: for arrays, ensure we always provide
11209         lower bounds.
11210
11211 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
11212
11213         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
11214         
11215         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
11216
11217 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
11218
11219         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
11220         arguments in their original register.
11221
11222 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
11223
11224         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
11225         memset/memcpy.
11226
11227         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
11228         when ssapre is enabled.
11229
11230         * inssel-long.brg: Fix bug in previous patch.
11231
11232         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
11233         multiplication by a constant.
11234
11235 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
11236
11237         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
11238         icc.
11239
11240         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
11241         saving registers.
11242
11243 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
11244
11245         * inssel-arm.brg: apply changes tested by Brian Koropoff
11246         <briank@marakicorp.com>.
11247
11248 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
11249
11250         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
11251         
11252 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
11253
11254         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
11255         to the same register if dreg is just a base register.
11256         (print_ins): Improve printing of membase opcodes.
11257
11258         * inssel-x86.brg: Add optimized ldind(reg) rules.
11259
11260         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
11261
11262 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
11263
11264         * mini.c: when running under valgrind, set the stack bottom for
11265         the GC at the actual approximate stack for the app (fixes running
11266         mono with valgrind).
11267
11268 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
11269
11270         * mini.c: do no break at the first valuetype to init found
11271         (fixes bug #75791).
11272
11273 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
11274
11275         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
11276
11277 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
11278
11279         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
11280
11281 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
11282
11283         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
11284
11285 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11286
11287         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
11288
11289         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
11290         code.
11291
11292         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
11293         code.
11294
11295         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
11296         methods.
11297
11298 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
11299
11300         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
11301
11302 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11303
11304         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
11305         in the tail recursion optimization.
11306
11307         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
11308         debug info into the assembly file.
11309
11310         * iltests.il: Add test for filter regions.
11311
11312         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
11313         initial stack of filter regions. Fixes #75755.
11314
11315 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
11316
11317         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
11318         stack requirements.
11319
11320 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11321
11322         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
11323         the check for an already compiled method on non-ia64 platforms.
11324         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
11325         proper domain.
11326
11327         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
11328
11329         * inssel-x86.brg: Add some optimized call rules.
11330
11331 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
11332
11333         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
11334         method here.
11335
11336         * mini.h mini-trampolines.c: Pass the trampoline argument to 
11337         mono_arch_patch_delegate_trampoline.
11338
11339         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
11340
11341         * mini-trampolines.c: Fix build.
11342
11343         * mini-amd64.h: Add delegate trampolines.
11344
11345         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
11346
11347         * inssel-amd64.brg: Add optimized call rules.
11348         
11349         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
11350
11351         * inssel-ia64.brg: Add optimized ldind(reg) rules.
11352
11353 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
11354
11355         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
11356         change.
11357
11358         * mini-ia64.c: Remove LMF fixmes.
11359
11360         * mini-ia64.h: Remove most fields from LMF.
11361
11362         * inssel-ia64.brg (stmt): Fix unaligned access errors.
11363
11364         * mini-trampolines.c: Add support for IA64 function descriptors.
11365
11366         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
11367         for IA64 function descriptors.
11368
11369 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
11370
11371         * tramp-arm.c: patch the vtable for virtual calls. Added
11372         support code to register/unregister the LMF.
11373         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
11374         more LMF work.
11375
11376 2005-08-19  Dick Porter  <dick@ximian.com>
11377
11378         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
11379         bit value if needed.
11380
11381 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
11382
11383         * mini.c (mini_get_method): Move handling of wrapper data here.
11384
11385         * mini.c (mono_method_to_ir): Add support for dynamic methods.
11386
11387         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
11388         virtual.
11389
11390         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
11391         bblock->code does not remain empty.
11392
11393 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
11394
11395         * arrays.cs: Add regression test for #75832.
11396
11397         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
11398         rules. Fixes #75832.
11399
11400         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
11401         instruction scheduling.
11402
11403 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
11404
11405         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
11406
11407 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
11408
11409         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
11410
11411         * mini-codegen.c: Fix VC build.
11412
11413         * cpu-pentium.md: Increase length of atomic_exhange_i4.
11414
11415 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11416
11417         * mini.h: fix signature for mono_register_opcode_emulation.
11418
11419 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
11420
11421         * mini.c: Get rid of most of the helper_sig_... constants using
11422         mono_create_icall_signature ().
11423
11424 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
11425
11426         * jit-icalls.c (helper_ldstr): New helper function.
11427
11428         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
11429
11430         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
11431         throw, load the string using a helper call instead of creating a string object.
11432
11433         * aot.c: Update after LDSTR changes.
11434
11435         * mini.h: Bump AOT file version.
11436         
11437         * aot.c: Save class size info into the AOT file. Print more statistics during
11438         compilation.
11439
11440         * mini.h: Bump AOT file version.
11441
11442         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11443         ordering of disasm cases. Fixes #74957.
11444
11445 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
11446
11447         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
11448         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
11449         the generic code needed for the ARM port.
11450
11451 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
11452
11453         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
11454         inssel-arm.brg: more ARM features and fixes.
11455
11456 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
11457
11458         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
11459         ARM port work in progress.
11460
11461 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
11462
11463         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
11464
11465         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
11466
11467         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
11468
11469         * inssel.brg (mini_emit_memset): Add support for unaligned access.
11470
11471         * *-ia64.*: Ongoing IA64 work.
11472         
11473         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
11474
11475 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11476
11477         * TODO: Remove out-of-data todo stuff.
11478
11479         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
11480         dead code.
11481
11482         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
11483
11484         * mini.h: Bump corlib version.
11485
11486 2005-07-27  Martin Baulig  <martin@ximian.com>
11487
11488         * mini-codegen.c
11489         (create_copy_ins): Added `const unsigned char *ip' argument; set
11490         `copy->cil_code' from it.
11491
11492 2005-07-27  Martin Baulig  <martin@ximian.com>
11493
11494         * mini-exceptions.c (mono_handle_exception): Don't call
11495         mono_debugger_handle_exception() for filters.
11496
11497 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
11498
11499         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
11500         as well.
11501
11502 2005-07-26  Martin Baulig  <martin@ximian.com>
11503
11504         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
11505
11506         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
11507         helper_compile_generic_method() if the method is actually virtual
11508         and non-final.
11509
11510 2005-07-26  Martin Baulig  <martin@ximian.com>
11511
11512         * mini.c
11513         (trampoline_code): Renamed to `mono_trampoline_code' and made it
11514         public; this is now accessed directly by the debugger.
11515         (mono_generic_trampoline_code): Removed.
11516
11517         * debug-mini.c
11518         (mono_debug_init_method): Also add interncalls and wrappers.
11519
11520 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
11521
11522         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
11523
11524 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
11525
11526         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
11527
11528 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
11529
11530         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
11531
11532 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11533
11534         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
11535         getting TLS offsets on AMD64 too.
11536
11537 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
11538
11539         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
11540
11541 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
11542
11543         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
11544         inssel-arm.brg, mini-arm.h: ARM port work in progress.
11545
11546 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11547
11548         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
11549
11550         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
11551         to mini.c.
11552
11553         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
11554         mono_sparc_is_virtual_call ().
11555         
11556         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
11557
11558         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
11559         trampoline parameters.
11560
11561         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
11562         
11563         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
11564         to mono_arch_get_vcall_slot_addr.
11565
11566         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
11567         trampoline code.
11568
11569         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
11570
11571 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11572
11573         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
11574
11575 2005-07-19  Martin Baulig  <martin@ximian.com>
11576
11577         * exceptions-amd64.c (throw_exception): Call
11578         mono_debugger_throw_exception() here like we're doing it on i386.
11579
11580 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11581
11582         * mini-ia64.c: Add optimized TLS access support.
11583
11584 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
11585
11586         * mini-exceptions.c: Ongoing IA64 work.
11587
11588         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
11589
11590         * mini.c: Use the default optimization set when embedding. Fixes
11591         #75194.
11592
11593 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
11594
11595         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
11596         of trampolines to a separate file.
11597
11598         * mini-trampolines.c: New file.
11599
11600         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
11601         separate file.
11602         
11603         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
11604         amd64/ia64 code.
11605
11606         * mini-codegen.c: Fix cygwin build.
11607
11608 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
11609
11610         * mini.c: Add some minor changes needed by the IA64 port.
11611
11612         * *-ia64.*: Ongoing IA64 work.
11613
11614 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
11615
11616         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
11617         trampolines into arch-independent and arch-dependent parts.
11618
11619         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
11620
11621 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
11622
11623         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
11624
11625         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
11626         the xp-regalloc-branch for amd64.
11627
11628         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
11629         xp-regalloc-branch for x86.
11630
11631 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11632
11633         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
11634
11635 2005-07-06  Martin Baulig  <martin@ximian.com>
11636
11637         * mini.c
11638         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
11639         (mono_jit_runtime_invoke): Likewise.
11640
11641 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11642
11643         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
11644         on x86 too.
11645         
11646         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
11647         without loading their metadata. Reorganize the file format so exception handling+
11648         debug info is kept separate from normal method info. Create MonoJitInfo 
11649         structures for methods lazily.
11650
11651         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
11652         loading metadata.
11653         (x86_class_init_trampoline): Patch AOT class init trampolines too.
11654
11655         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
11656
11657         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
11658         in AOT code.
11659
11660         * mini.h: Bump AOT file version.
11661
11662 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
11663
11664         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11665
11666 2005-07-01  Raja R Harinath  <rharinath@novell.com>
11667
11668         * Makefile.am (check-local): Call semdel-wrapper.
11669
11670 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
11671
11672         * mini-x86.c: Revert the last change as it seems to break the build..
11673
11674 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11675
11676         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11677         
11678         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
11679
11680 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
11681
11682         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
11683         outside of the macro, so strange stuff doesn't happen with gcc4
11684         (NEW_AOTCONST_TOKEN): Likewise.
11685
11686 2005-06-28  Martin Baulig  <martin@ximian.com>
11687
11688         * mini.c (mini_class_is_system_array): New static method; use this
11689         instead of `klass->parent == mono_defaults.array_class' everywhere
11690         since this also works for the new generic array class.
11691
11692 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11693
11694         * inssel.brg: Remove warnings.
11695
11696 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
11697
11698         * mini-ia64.c: Ongoing IA64 work.
11699
11700         * basic-float.cs: Add float->i1 conversion test.
11701
11702         * iltests.il: Add conv.u4 test.
11703
11704 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
11705
11706         * inssel-long.brg: Fix bug caused by last change.
11707
11708 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
11709
11710         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
11711         BSDs.  Allows the x86 JIT to work on OSX86
11712
11713 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
11714
11715         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
11716         u4->i8 conversion.
11717
11718         * mini-ia64.c: Ongoing IA64 work.
11719
11720 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11721
11722         * mini-ia64.c: Ongoing IA64 work.
11723
11724         * driver.c: Clean up jit_code_hash as well when using --regression.
11725
11726         * inssel-long.brg: Fix long->i4/u4 conversion rules.
11727
11728         * basic-long.cs: Add tests for long->u4 conversion.
11729
11730 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
11731
11732         * mini.c: Take mono_get_domainvar out of macros. This makes sure
11733         that we do not depend on undefined C behavior: the order stuff
11734         gets evaluated within an expression. Fixes mono when compiled on
11735         GCC 4.
11736
11737 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
11738
11739         * *-ia64.*: Ongoing IA64 work.
11740
11741         * aot.c: Lower memory usage while loading AOT methods.
11742
11743         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
11744
11745         * mini.h: Bump AOT file format version.
11746
11747 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11748
11749         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
11750
11751 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
11752
11753         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
11754         not on callee assembly). Fixed some comments.
11755
11756 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
11757
11758         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
11759         it gets proper disassembly.
11760         (emit_method_info): Remove some dead code.
11761
11762         * mini.c (mini_method_compile): Allways allocate the GOT var in
11763         mono_method_to_ir for emulating opcodes.
11764
11765 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
11766
11767         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
11768         before freeing the code memory. Fixes #74990.
11769
11770         * objects.cs: Add regression test for #74992.
11771
11772         * liveness.c: Extend live ranges of arguments to the beginning of the
11773         method. Fixes #74992.
11774
11775         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
11776         so it points into the faulting instruction.
11777
11778 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
11779
11780         * jit-icalls.c (mono_imul_ovf): Add exception handling.
11781
11782         * *-ia64.*: Ongoing IA64 work.
11783
11784         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
11785
11786 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
11787
11788         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
11789
11790         * *-ia64.*: Ongoing IA64 work.
11791
11792 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
11793
11794         * basic-long.cs: Add tests for add/sub.ovf.
11795
11796         * basic.cs: Add tests for sub.ovf.
11797
11798         * *-ia64.*: Ongoing IA64 work.
11799
11800 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
11801
11802         * *-ia64.*: Ongoing IA64 work.
11803
11804         * basic.cs: Add conv.ovf.i4.un test.
11805
11806 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
11807
11808         * mini.c: (remove_block_if_useless) Fixed bug 75061.
11809         
11810 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11811
11812         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
11813
11814 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
11815
11816         * *-ia64.*: Ongoing IA64 work.
11817
11818 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11819
11820         * trace.[ch]:
11821         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
11822
11823 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
11824
11825         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
11826
11827 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
11828
11829         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
11830
11831         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
11832         of a call is callable by a near call.
11833
11834 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
11835
11836         * mini-ia64.c: Ongoing IA64 work.
11837
11838 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
11839
11840         * genmdesc.c: Make the generated array non-static.
11841
11842         * inssel-long.brg: Fix LSHR_IMM rule.
11843
11844         * *-ia64.*: Ongoing IA64 work.
11845
11846         * *-ia64.*: Ongoing IA64 work.
11847
11848 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11849
11850         * *-ia64.*: Ongoing IA64 work.
11851
11852         * *-ia64.*: Ongoing IA64 work.
11853         
11854         * mini-ia64.c: Ongoing IA64 work.
11855
11856         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
11857
11858 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11859
11860         * objects.cs basic-calls.cs: Move some tests to objects.cs.
11861         
11862         * objects.cs basic-long.cs: Move some tests to objects.cs.
11863
11864 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
11865
11866         * *-ia64.*: Ongoing IA64 work.
11867
11868         * iltests.il: Add a new test.
11869
11870         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
11871         newobj. Fixes #75042.
11872
11873 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
11874
11875         * *-ia64.*: Ongoing IA64 work.
11876         
11877         * *-ia64.*: Ongoing IA64 work.
11878         
11879         * *-ia64.*: Ongoing IA64 work.
11880
11881         * basic.cs objects.cs: Move tests accessing static variables as well.
11882
11883         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
11884
11885 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
11886
11887         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
11888
11889         * driver.c: Always print failed tests.
11890
11891         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
11892         frame pointer.
11893
11894         * *ia64*: Ongoing IA64 work.
11895
11896 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
11897
11898         * basic.cs: Add tests for add.ovf. Fix warnings.
11899
11900 2005-05-18  Miguel de Icaza  <miguel@novell.com>
11901
11902         * driver.c (mono_main): Avoid crash if no argument is passed to
11903         --break;  Do not use g_error, but f_printf.   And fix all other
11904         ocurrences of the same crash.
11905
11906 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
11907
11908         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
11909         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
11910         Fixes #74742.
11911
11912 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
11913
11914         * *-ia64.*: Add beginnings of IA64 backend.
11915
11916         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
11917
11918 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
11919
11920         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
11921         Fixes #74925.
11922
11923         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
11924
11925         * mini-amd64.c: Fix a warning.
11926
11927 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
11928
11929         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
11930         in float_neg. Fixes #74897.
11931
11932         * mini-amd64.c (emit_call): Fix another near call bug.
11933
11934 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
11935
11936         * declsec.c: Keep the appdomain information in the structure. Added a 
11937         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
11938         value gets overwritten).
11939         * declsec.h: Set the default MonoArray for the the stack to 6. Added
11940         an MonoAppDomain member to MonoSecurityFrame.
11941         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
11942         used in the stack walk. Now use a MonoArray which grow (double) when
11943         it gets full.
11944
11945 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
11946
11947         * mini.c: Re-enabled runtime cleanup, since running threads should
11948         now properly stop when exiting.
11949
11950 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
11951
11952         * mini-codegen.c: New file contaning the arch-independent local
11953         register allocator. Not used by any architectures yet.
11954
11955         * mini.h linear-scan.c: Merge some changes from the 
11956         mini-xp-local-regalloc branch.
11957
11958 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
11959
11960         * mini-amd64.c (emit_call): Fix calls to native functions when the
11961         runtime is compiled as a shared library. Fixes #74756.
11962
11963         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
11964         on a literal field. Fixes #74751.
11965
11966 2005-04-25  Raja R Harinath  <rharinath@novell.com>
11967
11968         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
11969
11970 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
11971
11972         * objects.cs: Add missing null casting test.
11973
11974 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
11975
11976         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
11977         in wrapper methods. Also rename 'address' variable to 'offset'.
11978
11979 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
11980
11981         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
11982         warnings.
11983         
11984         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
11985
11986         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
11987         work on windows.
11988
11989 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
11990
11991         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
11992
11993 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
11994
11995         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
11996         just the last bytes.
11997
11998 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
11999
12000         * aot.c (mono_compile_assembly): Fix warning.
12001
12002         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
12003         by the _MSC_VER stuff.
12004
12005 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
12006
12007         * inssel-long.brg: Fix #74588.
12008
12009         * cpu-amd64.md: Fix #74591.
12010
12011         * iltests.il: Add new regression tests.
12012
12013 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
12014
12015         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
12016         valuetype.
12017
12018 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
12019
12020         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
12021
12022         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
12023         from Bill Middleton <flashdict@gmail.com>.
12024
12025 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
12026
12027         * arrays.cs: Add new regression test. Fix warnings.
12028
12029 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
12030
12031         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
12032         and leakage in CKFINITE.
12033
12034         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
12035         this to a null op since it is called on amd64 too.
12036
12037         * exceptions-amd64.c (get_throw_trampoline): Align stack.
12038
12039         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
12040         body since this is not used on amd64.
12041         
12042         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
12043
12044         * mini-amd64.c: Remove obsolete fixmes.
12045
12046         * mini.c (print_method_from_ip): Fix debugging support.
12047
12048 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12049
12050         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
12051         so that expressions that don't give much gain are not reduced.
12052         * ssapre.h: Likewise.
12053
12054 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
12055
12056         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
12057
12058         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
12059
12060         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
12061
12062 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
12063
12064         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
12065
12066         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
12067
12068 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
12069
12070         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
12071         stack touching.
12072
12073         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
12074
12075         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
12076
12077         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
12078
12079         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
12080         MONO_ARCH_USE_SIGACTION. Fixes #74252.
12081
12082         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
12083
12084         * mini-x86.c: Fix up stack overflow handling.   
12085
12086         * exceptions.cs: Add new regression test.
12087
12088 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
12089
12090         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
12091         mono_jit_thread_attach.
12092
12093         * mini.c (mono_method_to_ir): Verify called method is not abstract.
12094
12095 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12096
12097         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
12098         avoid calling constructors using callvirt.
12099
12100         * inssel.brg: Fix #74073.
12101
12102 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
12103
12104         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
12105         compilation with non-GCC compilers.
12106         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
12107         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
12108
12109 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
12110
12111         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
12112         klass->interface_offsets (will likely fix bug#74073).
12113
12114 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12115
12116         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
12117
12118 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
12119
12120         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
12121         to amd64_div_reg_size ().
12122         
12123         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
12124
12125 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
12126
12127         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
12128
12129 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12130
12131         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
12132
12133 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12134
12135         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
12136         
12137         * mini.c (mono_precompile_assembly): Load and precompile referenced
12138         assemblies as well. Fixes #74015.
12139
12140 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12141
12142         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
12143
12144 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
12145
12146         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
12147         a lot of checks and (anyway) permissions cannot work until corlib is 
12148         loaded.
12149
12150 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
12151
12152         * mini-ppc.c: fixed ABI issue on sysv/ppc.
12153
12154 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
12155
12156         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
12157         calls (fixes bug#72824).
12158
12159 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12160
12161         * mini.c: fix tail recursion elimination (see test in bug#73936).
12162
12163 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
12164
12165         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
12166         some fp functions in sse2 mode.
12167
12168 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
12169
12170         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
12171
12172 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
12173
12174         * mini.h mini.c: Add mono_get_jit_tls_key ().
12175
12176         * mini-x86.c: Enable fast TLS support on windows.
12177
12178 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
12179
12180         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
12181         * mini.c: Check for p/invoke method when generating code. If a
12182         p/invoke method, or it's class, isn't decorated with [Suppress
12183         UnmanagedCodeSecurity] then generate code to call System.Security.
12184         UnmanagedDemand (only if the security manager is active).
12185
12186 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12187
12188         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
12189         last change as it seems to cause strange crashes.
12190         
12191 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12192
12193         * *.c: handle unsafe function pointers where needed.
12194
12195 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12196
12197         * mini.c (mono_jit_free_method): Remove the fixme too.
12198
12199 2005-03-15  Miguel de Icaza  <miguel@novell.com>
12200
12201         * mini.c: As discussed, make the code actually free the delegate
12202         thunk now, to enable the debugging of delegate problems, use
12203         MONO_DEBUG=1 when running Mono. 
12204
12205         This takes also care of parts of the leaks as seen by Joe.
12206
12207 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
12208
12209         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
12210         thread_tls_offset calculation.
12211
12212 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
12213
12214         * declsec.c: Reworked linkdemand checks for icall. The previous code
12215         was using the declaration code (untrusted) and didn't work as expected
12216         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
12217         specific case.
12218
12219 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
12220
12221         * iltests.il: Add new localloc test.
12222
12223         * mini-amd64.c: Handle large stack allocations the same way as on
12224         windows if stack overflow handling is working.
12225         
12226         * mini-amd64.c: Allocate the signal stack using mmap.
12227
12228         * mini.c (sigsegv_signal_handler): Fix reading of context.
12229
12230         * mini-exceptions.c: Fix up stack overflow handling.
12231
12232         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
12233
12234         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
12235
12236         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
12237
12238         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
12239
12240         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
12241         tramp_init functions as they are no longer needed.
12242
12243 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
12244
12245         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
12246         
12247         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
12248
12249         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
12250         
12251         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
12252         support that now.
12253
12254         * mini-ops.h: Add OP_LMUL_IMM.
12255
12256         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
12257         long mul/div opcodes as intrinsic.
12258
12259         * mini-amd64.c (emit_call): Handle the case when the callee might be
12260         an AOT method.
12261
12262 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
12263
12264         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
12265         extra safe.
12266         
12267         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
12268
12269         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
12270
12271 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
12272
12273         * mini.c (mono_codegen): Don't leak here, to help people running
12274         monogrind.
12275
12276 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
12277
12278         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
12279         conversions in sse2 mode.
12280
12281         * basic-float.cs: Add regression test.
12282         
12283         * mini-amd64.c: Reenable sse2.
12284
12285 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12286
12287         * mini-amd64.c: Disable sse2 until some regressions are fixed.
12288
12289 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
12290
12291         * driver.c: Copyright text should include 2005.
12292         
12293 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12294
12295         * cpu-amd64.md (load_membase): Fix more max lengths.
12296
12297 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
12298
12299         * cpu-amd64.md (load_membase): Fix max length.
12300
12301         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
12302
12303         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
12304
12305         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
12306         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
12307
12308         * basic-float.cs: Add rounding regression test.
12309
12310         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
12311
12312 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
12313
12314         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
12315         structures in registers for pinvoke wrappers.
12316
12317 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
12318
12319         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
12320
12321 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
12322
12323         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
12324         wrapper to mono_jit_thread_attach.
12325
12326         * mini.c (mini_jit_thread_attach): New jit icall.
12327
12328         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
12329         native->managed wrappers.
12330
12331         * exceptions.cs: Add new regression test.
12332
12333         * mini.c (optimize_branches): Check regions in the cbranch to throw
12334         block case as well. Fixes #73242.
12335
12336 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12337
12338         * mini.c: thread safety fixes.
12339
12340 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
12341
12342         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
12343         patching stuff, since delegates use jump trampolines so there is
12344         no caller.
12345
12346         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
12347         jump trampolines.
12348         
12349         * tramp-amd64.c: Fix build.
12350
12351         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
12352         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
12353
12354         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
12355         Rename this to mono_arch....
12356         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
12357
12358         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
12359
12360         * mini-amd64.c (emit_call): If both the caller and the callee is
12361         guaranteed to have 32 bit addresses, emit a normal call.
12362
12363         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
12364
12365         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
12366         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
12367         method_ptr inside delegates.
12368
12369 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
12370
12371         * mini.c (mono_jit_free_method): Free the method info even if the native code is
12372         invalidated. Fixes #73001.
12373
12374         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
12375
12376         * mini-x86.c: Only use stdcall for pinvokes on windows.
12377
12378 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
12379
12380         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
12381         * mini-x86.c: remove unreliable __thread var offset detection,
12382         use the correct accessors and enable by default.
12383
12384 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12385
12386         * mini.c (mono_jit_free_method): Fix memory leak.
12387
12388 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
12389
12390         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
12391
12392 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
12393
12394         * cpu-amd64.md: Fix lengths of atomic opcodes.
12395
12396 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
12397
12398         * driver.c: try to not imply using ICU is any good.
12399
12400 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
12401
12402         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
12403         functions as inline ops.
12404
12405         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
12406         some Interlocked functions as inline ops.
12407
12408         * mini.c (move_basic_block_to_end): Fix bug in last patch.
12409
12410         * mini.h (MonoBasicBlock): Reorganize fields a bit.
12411
12412         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
12413
12414         * mini.c: Add support for OP_NOT_TAKEN.
12415
12416         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
12417         structures in registers for pinvoke wrappers.
12418
12419         * mini-amd64.c: Fix warnings.
12420
12421 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
12422
12423         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
12424
12425         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
12426
12427         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
12428         address instead of loading the address from it.
12429
12430         * mini-x86.c: Add support for returning small structs in registers
12431         on Win32. Fixes part of #70864.
12432         
12433 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
12434
12435         * trace.c (get_token): Improve error checking.
12436
12437 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12438
12439         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
12440
12441 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
12442  
12443         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
12444         it can be reused for MonoClass.
12445         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
12446         _LINKDEMAND.
12447
12448 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
12449
12450         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
12451         instead of a MonoReflectionMethod. The method information wasn't used
12452         when displaying SecurityException details (but will be now).
12453
12454 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
12455
12456         * Makefile.am : windows build fix.
12457
12458 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12459
12460         * iltests.il: Add new regression test.
12461
12462         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
12463         #72522.
12464
12465 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
12466  
12467         * mini.c: Moved linkdemand check into helper function check_linkdemand
12468         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
12469         LDFTN, LDVIRTFTN).
12470
12471 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
12472
12473         * declsec.c: Added statistics counter for different kinds of 
12474         LinkDemands.
12475         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
12476         (and commented) declaration.
12477         * mini.c: Added statistics counter for security Demand code 
12478         generation. Added display of security statistics.
12479
12480 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
12481
12482         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
12483         Fix compilation errors under gcc-2.95.
12484
12485 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
12486
12487         * mini.c, driver.c: Use the new jit trampoline hashtable
12488
12489 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12490
12491         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
12492
12493 2005-02-11  Martin Baulig  <martin@ximian.com>
12494
12495         * debug-mini.c (mono_debug_close_method): Free the line number array.
12496
12497 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12498
12499         * aot.c: Break up large methods into smaller ones. Share GOT slots for
12500         icalls.
12501
12502         * mini.h: Bump AOT file format version. 
12503
12504 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
12505
12506         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
12507         APTC and P/Invoke.
12508         * declsec.h: Added macros to get/set lazyly initialized security 
12509         informations about assemblies. Added new enum for different type of
12510         possible LinkDemand violation. Added function to check LinkDemands.
12511         * mini.h: Added a field to MonoCompile to hold any security violation
12512         detected when JITting a method (so it can be thrown later).
12513         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
12514         and CEE_CALLVIRT. Added code to throw exception at the end of
12515         mini_method_compile (note: the exception is unhandled right now).
12516
12517 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
12518
12519         * mini.c, jit-icalls.c: use the managed implementation of
12520         memset for initobj and memset, to avoid managed <-> unmanaged
12521         transitions.
12522
12523 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12524
12525         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
12526         optimization if it would need a GOT var.
12527
12528         * basic.cs: Add tests for constant propagation and switch statements.
12529
12530         * ssa.c: Fix out-of-range constant propagation and switch statements.
12531
12532 2005-02-09    <vargaz@freemail.hu>
12533
12534         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
12535
12536 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
12537
12538         * cpu-amd64.md (load_membase): Fix max length of load_membase.
12539
12540 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12541
12542         * mini.c: update to new signature of mono_class_get_allocation_ftn().
12543
12544 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
12545
12546         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
12547         arithmetic operations.
12548
12549 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
12550
12551         * mini-ppc.c: add a workaround for broken user code that
12552         DllImports vararg functions with non-vararg signatures.
12553
12554 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12555
12556         * mini.c (mono_jit_compile_method_inner): Add detection and a 
12557         meaningfull error message for assemblies written in Managed C++.
12558
12559         * tramp-amd64.c mini-amd64.h: Add support for 
12560         create_trampoline_from_token ().
12561
12562         * aot.c mini-x86.c abcremoval.c: Applied patch from
12563         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
12564
12565 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
12566
12567         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
12568         which takes a MonoImage/token as parameter instead of a MonoMethod.
12569
12570         * aot.c: Use the new trampoline for initializing vtables.
12571
12572         * aot.c: Add support for ldfld/stfld_remote wrappers.
12573
12574         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
12575         rules for compare <MEM>, IMM.
12576
12577         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
12578
12579         * aot.c: Handle inherited finalizers correctly.
12580
12581 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
12582
12583         * inssel.brg (stmt): Add a missing _setup_... ().
12584
12585         * aot.c: Save some parts of the class state to the AOT file and use it
12586         to recompute that state when a class is initialized.
12587
12588         * mini.c: Install AOT hooks into the runtime.
12589
12590         * mini.h: Bump AOT file format version.
12591         
12592         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
12593         Fixes #72148.
12594
12595         * iltests.il: Add new test.
12596
12597 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12598
12599         * mini.c: fix typo.
12600
12601 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
12602
12603         * mini.c: setup the statistical profiler in the thread attach
12604         callback to cope with the new single thread code.
12605
12606 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
12607
12608         * mini-ppc.c: ensure we have enough room for the profiler
12609         calls (fixed bug#72084).
12610
12611 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
12612
12613         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
12614         it.
12615
12616 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12617
12618         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
12619
12620 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12621
12622         * ssapre.c: Fixed an issue with down safety (this allows IronPython
12623         to succesfully execute parrotbench).
12624         * ssapre.h: Likewise.
12625
12626 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12627
12628         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
12629         variable for stores to method arguments (fixes a SSAPRE issue).
12630
12631 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12632
12633         * mini.c: handle value types in dup, fixes gen-112.cs.
12634
12635 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
12636
12637         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
12638         sequence for calls in dynamic methods to avoid thunks.
12639
12640 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12641
12642         * mini.c: correctly remove dynamic methods from the hashtable.
12643
12644 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12645
12646         * driver.c: Disabled SSAPRE until fix the bug that appears
12647         in IronPython's parrotbench.
12648
12649 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
12650
12651         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
12652
12653         * mini.c (mono_method_to_ir): Revert the previous change.
12654         
12655         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
12656         when AOT compiling.
12657
12658         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
12659         mono_jit_info_table_find () etc. when running under valgrind.
12660
12661         * inssel.brg: Fix warnings.
12662
12663         * mini-exceptions.c: Fix warnings.
12664
12665 2005-01-31  Martin Baulig  <martin@ximian.com>
12666
12667         * driver.c (compile_all_methods_thread_main): Don't try to compile
12668         generic methods or anything which has type parameters.
12669
12670 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
12671
12672         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
12673
12674         * TestDriver.cs: Add --verbose flags.
12675
12676         * graph.c ssa.c: Fix 64 bit warnings.
12677         
12678         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
12679         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
12680         Fix 64 bit warnings.
12681
12682         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
12683         variable not spotted by gcc.
12684         
12685         * mini-amd64.c inssel-amd64.brg: Applied patch from  
12686         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
12687         X86_COMPARE_MEMBASE opcodes.
12688
12689         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
12690
12691 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
12692
12693         * *: MonoMethod->signature might be NULL now. You *MUST* use
12694         mono_method_signature.
12695
12696 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12697
12698         * driver.c (compile_all_methods_thread_main): Compile the methods
12699         without invoking cctors.
12700
12701 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12702
12703         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
12704         * basic-calls.cs: test for the above.
12705
12706 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12707
12708         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
12709         MonoJitInfo changes.
12710
12711 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
12712
12713         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
12714         eagerly if it contains dynamic methods.
12715         
12716         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
12717
12718         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
12719         trace, it is now computed by an icall from trace_ips.
12720         
12721         * mini-exceptions.c: Fix a warning.
12722
12723 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
12724
12725         * mini-exceptions.c: don't bother getting stack trace info if
12726         it's not going to be used.
12727
12728 2005-01-27  Raja R Harinath  <rharinath@novell.com>
12729
12730         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
12731         ssapre-mini-ops.h.
12732
12733 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
12734
12735         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
12736
12737         * aot.c: Avoid calling mono_method_get_header () if not needed.
12738
12739         * mini.h: Bump AOT file format version.
12740         
12741         * mini.c (mono_emit_native_call): Allocate a GOT var here.
12742
12743         * mini.c (mono_print_tree): Print more info for calls.
12744
12745 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
12746
12747         * declsec.h: Remove warning by adding missing include for marshal.h
12748
12749 2005-01-26  Martin Baulig  <martin@ximian.com>
12750
12751         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
12752         `ip' twice.
12753
12754 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
12755
12756         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
12757         flags.
12758
12759         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
12760
12761         * aot.c (mono_compile_assembly): Fix a warning.
12762
12763 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
12764
12765         * declsec.c: Look for security attributes on the original MonoMethod 
12766         (and not the wrapped one). This fix permissions on icalls.
12767
12768 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12769
12770         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12771
12772         * mini.c (mono_allocate_stack_slots): Add a fixme.
12773
12774         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12775
12776 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12777
12778         * inssel.brg: optimize casts of sealed types (more
12779         optimizations waiting for fixes in remoting).
12780
12781 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12782
12783         * inssel.brg (stmt): Add another dummy rule.
12784
12785         * driver.c: Fix warnings.
12786
12787         * driver.c (mono_main): If running under valgrind, instruct glib to use
12788         the system allocation functions so valgrind can track the memory
12789         allocated by the g_... functions.
12790
12791         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
12792
12793         * mini-ops.h: Add OP_DUMMY_STORE opcode.
12794
12795         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
12796
12797         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
12798         variables in try regions.
12799
12800         * mini.c (mini_method_compile): Don't disable optimizations on large
12801         methods when AOT compiling.
12802
12803         * mini.c (mono_allocate_stack_slots): New arch independent method to 
12804         allocate stack slots. Not yet used.
12805
12806 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
12807
12808         * debug-mini.c (mono_debug_close_method): Plug some leaks.
12809
12810 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
12811
12812         * mini-ppc.c: make the branch info relative as the code
12813         buffer can be reallocated.
12814
12815 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
12816
12817         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
12818         * driver.c: Removed the AOT/security restriction. Now initialize the
12819         security manager (in metadata) if --security is used.
12820         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
12821         rather than the pointer to declarative security, when AOT is used.
12822
12823 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
12824
12825         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
12826         basic blocks, reduced intrinsic exception throwing code size.
12827
12828 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
12829
12830         * driver.c (mini_usage): Reorder the usage screen.
12831
12832 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
12833
12834         * mini.c (mono_resolve_patch_target): Fix warning.
12835
12836 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
12837
12838         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
12839         previous patch.
12840
12841         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12842
12843         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
12844         breaks the amd64 build.
12845
12846         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
12847         register allocation. Fixes #71454.
12848
12849         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12850
12851         * arrays.cs: Add new regression test.   
12852
12853 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12854
12855         * ssapre.c: Turned usage of snprintf to GString.
12856         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
12857         (I left it on by mistake in my previous commit).
12858
12859 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
12860
12861         * mini.c, cfold.c, basic-calls.cs: preserve side effects
12862         on cond branch optimization (fixes bug# 71515).
12863
12864 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12865
12866         * abcremoval.c: Fixed bug 71062.
12867         * abcremoval.h: Likewise.
12868
12869 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12870
12871         * mini.c: Added a new functionality to optimize_branches, the removal
12872         of useless basic blocks, and fixed some problem in the removal of
12873         critical edges; some utility functions added for both purposes.
12874         * ssapre.c: Added complex expression support, and fixed bug 70637.
12875         * ssapre.h: Likewise.
12876         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
12877         enabled in SSAPRE.
12878         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
12879         * driver.c: Re-enabled SSAPRE.
12880
12881 2005-01-19  Martin Baulig  <martin@ximian.com>
12882
12883         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
12884         the result of mono_get_method_constrained().
12885
12886 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
12887
12888         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
12889         manager.
12890
12891 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
12892
12893         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
12894         be detected.  Fixes #59296.
12895
12896 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12897
12898         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
12899         which can happen. Fixes #71361.
12900
12901 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12902
12903         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
12904         manager.
12905
12906 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12907
12908         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
12909         appdomain-unload.exe to fail.
12910         
12911         * mini.c: Fix some memory leaks.
12912
12913 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
12914
12915         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
12916         Fixed bug and sped up some codepaths.
12917
12918 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12919
12920         * mini.c: Fix some memory leaks.
12921
12922         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
12923         conversion.
12924
12925         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
12926
12927         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
12928         #71320.
12929
12930         * iltests.il: Add regression test for #71320.
12931
12932 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
12933
12934         * mini.c (mono_codegen): Fix installation of profiler hooks.
12935
12936         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
12937
12938 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12939
12940         * mini.h, mini.c, cfold.c: optimize access to enum
12941         readonly fields, too. Eval conditional branches if possible
12942         to perform unreachable code removal in more cases.
12943
12944 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
12945
12946         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
12947
12948         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
12949         code manager.
12950
12951         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
12952         WinXP DEP. Fixes #71244.
12953
12954 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
12955
12956         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
12957
12958 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
12959
12960         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
12961
12962 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
12963
12964         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
12965         changes.
12966
12967         * mini.h: Bump AOT version.
12968
12969         * mini.h (MonoCompile): Change exvar to a hash table.
12970
12971         * mini.c: Allocate a separate exvar for each handler block.
12972
12973         * mini.c: Get rid of the computation of filter_lengths, its not needed.
12974
12975         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
12976         ex var with the pending exception and only throw if the two are equal.
12977         Fixes #68552.
12978         
12979         * exceptions.cs: Add tests for rethrow and nested catch clauses.
12980
12981         * mini-x86.c: Fix warnings.
12982
12983         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
12984         used by all the ports now.
12985
12986         * aot.c: Add write-symbols and save-temps options.
12987
12988 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
12989
12990         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
12991
12992 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
12993
12994         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
12995         operations.
12996
12997         * tramp-s390.c: Check vtable slot belongs to the domain.
12998
12999         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
13000         as per other platforms.
13001
13002         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
13003
13004 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
13005
13006         * driver.c: we don't run the Main() code in a subthread anymore.
13007
13008 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
13009
13010         * mini.c: added experimental rtc support in the statistical
13011         profiler: if the user has the permission, more accurate statistics
13012         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
13013         The MONO_RTC value must be restricted to what the linux rtc allows:
13014         power of two from 64 to 8192 Hz.
13015
13016 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
13017
13018         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
13019
13020 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
13021
13022         * mini-ppc.c: better icache flush for smp.
13023
13024 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
13025
13026         * mini-amd64.c (emit_move_return_value): Fix memory leak.
13027
13028         * mini-x86.c (get_call_info): Add the get_call_info () code from the
13029         amd64 port, not yet used.
13030
13031 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13032
13033         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
13034         a struct type.
13035
13036 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
13037
13038         * driver.c: Added --security option to activate the security manager.
13039         Right now this will allow code generation for declarative demands and
13040         is disabled when AOT is specified.
13041         * mini.c: Add code generation for declarative security demands.
13042         * mini.h: Add mono_use_security_manager as an extern gboolean.
13043
13044 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13045
13046         * aot.c (mono_compile_assembly): Speed up compilation a bit by
13047         emitting more dense assembly code.
13048
13049         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
13050         exception throwing stuff.
13051
13052 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
13053
13054         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
13055         dead code.
13056
13057         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
13058         left in by mistake.
13059
13060         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
13061         fixed.
13062
13063         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
13064
13065         * tramp-*.c: Only patch vtable slots if the object is in the current
13066         domain. Fixes appdomain-unload.exe.
13067
13068         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
13069         
13070         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
13071         x86 branch.
13072
13073 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13074
13075         * mini.c (reverse_branch_op): New helper function.
13076
13077         * mini.c (optimize_branches): Run the new optimization only on 
13078         platforms which support it. Also reverse all kinds of branches.
13079
13080         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
13081
13082         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
13083         a throw statement.
13084
13085         * mini.c (optimize_branches): Reverse not-equals branches if the false
13086         bblock is a throw. This happens a lot of time with argument checking in
13087         corlib.
13088
13089         * mini.c (mono_codegen): Add support for placing basic blocks after
13090         the function epilogue.
13091
13092         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
13093         function epilogue.
13094         
13095 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
13096
13097         * mini.c (setup_stat_profiler): Only set this up if the platform
13098         supports ITIMER_PROF.
13099
13100 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13101
13102         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
13103         previous patch.
13104
13105         * inssel.brg: Fix a warning.
13106
13107 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
13108
13109         * mini.c: added support for statistical profiler 
13110         (run with: --profile=default:stat).
13111
13112 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
13113
13114         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
13115
13116         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
13117
13118         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
13119         related to global registers from the amd64 port.
13120
13121 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
13122
13123         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
13124
13125         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
13126         with global registers.
13127         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
13128
13129         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
13130
13131 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
13132
13133         * debug-mini.c (encode_value): Fix off-by-one.
13134
13135         * aot.c (encode_value): Likewise.
13136
13137         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
13138
13139 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
13140
13141         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
13142         AOT.
13143
13144         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
13145         
13146         * aot.c (emit_method_info): Increase size of temp buffer.
13147
13148         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
13149         the AOT case.
13150
13151 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
13152
13153         * aot.c (emit_method_info): Fix build.
13154         
13155         * aot.c: Further rework of the AOT file format to reduce the size of
13156         the method info data.
13157
13158         * mini.h: Bump AOT file format version.
13159
13160 2004-12-27  Martin Baulig  <martin@ximian.com>
13161
13162         * mini.c (mini_get_method): New static method; call
13163         mono_get_method_full() and mono_get_inflated_method().
13164         (mono_method_to_ir): Use mini_get_method() instead of
13165         mono_get_method_full(). 
13166
13167 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
13168
13169         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
13170
13171 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
13172
13173         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
13174
13175         * inssel-amd64.brg: Add some optimization rules.
13176
13177 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
13178
13179         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
13180         standard not GC'd stuff is fine.
13181
13182 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
13183
13184         * aot.c: Rework the AOT file format to get rid of most of the global
13185         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
13186
13187         * mini.h: Bump AOT file format version.
13188         
13189 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
13190
13191         * mini.h: Bump AOT file format version.
13192
13193         * aot.c (mono_aot_is_got_entry): New function to determine if an 
13194         address is inside a GOT.
13195
13196         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
13197
13198         * cpu-pentium.md: Increase the maximum size of some instructions which
13199         might involve a got access.
13200         
13201         * mini.c (get_method_from_ip): Another debug helper function.
13202
13203         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
13204         when got var accesses are created during the decompose phase.
13205
13206         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
13207
13208         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
13209         argument mini_compile_method and to MonoCompile, and use this to
13210         determine whenever a given method is compiled for AOT. This allows the
13211         other methods compiled during AOT compilation to be free of AOT stuff,
13212         so the backends does not need to add special support for them by
13213         creating a fake GOT etc.
13214
13215         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
13216         longer needed.
13217
13218 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
13219
13220         * mini.c (mono_method_to_ir): It turns out that some of the
13221         x-appdomain wrappers are lax with types, so just ignore this for
13222         all wrappers.
13223
13224         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
13225         at the vtable->klass. If it is non-shared code we can just use the
13226         vtable.
13227
13228 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
13229
13230         * mini-ppc.c: access MonoDomain from tls, too.
13231
13232 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
13233
13234         * declsec.c: Removed unused variable (and related warning ;-)
13235
13236 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
13237
13238         * iltests.il: New test for LDELEMA on an array of ref types.
13239
13240         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
13241         all ldelema's on reftypes.
13242         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
13243         it was the wrong place to put it.
13244
13245         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
13246         register to pop to make this cleaner, at the request of Paolo.
13247
13248 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13249
13250         * mini-ops.h (OP_GETHASHCODE): New op.
13251
13252         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
13253
13254         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
13255         operation.
13256
13257         For a microbenchmark, this reduces the cost of Hashtable.get_Item
13258         by 25%.
13259         
13260         * mini-x86.c (mono_arch_output_basic_block): Rather than
13261
13262         add ebp, 4
13263
13264         Emit
13265
13266         pop edx
13267
13268         The first is 3 bytes while the second is 1. This saves 36 kb on
13269         mscorlib, quite a big saving. When bootstraping mcs, I was able to
13270         see a small boost because of icache locality.
13271
13272         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
13273
13274 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
13275
13276         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
13277         started code sharing with the generic code.
13278
13279 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
13280
13281         * mini-ppc.c, cpu-g4.md: added code for direct access to
13282         tls data slots.
13283
13284 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
13285
13286         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
13287          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
13288         to OP_TLS_GET.
13289
13290 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
13291
13292         * declsec.c|h: Added functions to cache the declarative stack modifiers
13293         in MonoJitInfo and to create a security frame from a MonoJitInfo 
13294         structure.
13295         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
13296         created. Register internal calls for System.Security.SecurityFrame::
13297         _GetSecurityFrame and _GetSecurityStack.
13298         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
13299         the definitions for the new stack walk/callback mechanism.
13300         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
13301         first security frame for LinkDemands and InheritanceDemands) and
13302         GetSecurityStack for Demands. Both use the new mono_walk_stack code
13303         from lupus.
13304         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
13305         walk initialization (lupus).
13306
13307 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13308
13309         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
13310         idiom.
13311         (handle_loaded_temps): Do not create a temporary variable for
13312         things that we know are temps. They will never be modified.
13313         (mono_spill_call): Set MONO_INST_IS_TEMP
13314         (mono_emulate_opcode): ditto
13315         (emit_tree): ditto
13316         (mono_method_to_ir.CEE_DUP): ditto
13317
13318 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
13319
13320         * mini.c (type_to_eval_stack_type): Make this handle the void type
13321         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
13322         (emit_tree): use ip_in_bb to special case some common idioms
13323         Update all callers to pass in the IP.
13324         (mono_method_to_ir): Make CEE_CALL* do the above as well.
13325
13326         This gives us a nice 2% speedup in mcs bootstrap.
13327
13328         * mini-x86.c (peephole_pass): Peephole pass to make
13329         mov  [foo], eax
13330         push [foo]
13331
13332         into
13333
13334         mov [foo], eax
13335         push eax
13336
13337         * mini.c (ip_in_bb): new method.
13338         (mono_method_to_ir): use this method rather than doing the hash
13339         lookup ourselves.
13340
13341         * linear-scan.c (mono_linear_scan): When expiring actives, you
13342         don't need to keep around variables that expire on this
13343         instruction. This makes it so that:
13344              a = b + 1
13345         will turn into:
13346              store (ebx add (ebx, 1))
13347         which will become
13348              add ebx, 1
13349
13350 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
13351
13352         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
13353         combination to avoid doing two copies. Fix up problems with previous
13354         patch.
13355
13356         * mini.c: Fix 64 bit warnings.
13357
13358         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
13359
13360 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
13361
13362         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
13363         changes from the x86 code.
13364
13365         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
13366
13367 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
13368
13369         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
13370         throwing code to reduce its size, unify the AOT and non-aot code and 
13371         get rid of relocations in the AOT case.
13372
13373         * mini-x86.h mini.c exceptions-x86.c 
13374         (mono_arch_get_throw_corlib_exception): New arch specific function to 
13375         raise corlib exceptions which doesn't require relocations in the 
13376         caller.
13377
13378         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
13379
13380 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
13381
13382         * mini.c (mono_emit_method_call): Only allocate the got var when it is
13383         needed.
13384
13385         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
13386         in the AOT case.
13387
13388 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13389
13390         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
13391         with add function when used from Inc/dec atomic 
13392         functions. Re-enabled optimization on x86.
13393         * mini-ops.h: renamed atomic_add functions to
13394         allow _add to match the Interlocked::Add and
13395         _add_next to match Interlocked::Inc/Dec.
13396
13397 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
13398
13399         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
13400         linking of BBs to the end BB, and enabled SSAPRE also with
13401         consprop and copyprop (which was prevented by that bug).
13402
13403 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13404
13405         * mini-x86.c: disabling the Interlocked optimizing code. 
13406
13407 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13408
13409         * aot.c (load_aot_module): Move reading of got_addr after the AOT
13410         file version check.
13411         
13412 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13413
13414         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
13415         interlocked optimization due lack of support on x86, rewrote 
13416         exchange to take into account that base may be in eax.
13417         
13418         xsp works again; activated Interlocked optimizing code.
13419         
13420 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13421
13422         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13423
13424 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
13425
13426         * mini-ops.h: Add new opcodes.
13427
13428         * mini.h: Add new patch types. Add got_var to MonoCompile.
13429
13430         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
13431         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
13432         make it work with all kinds of patchable code.
13433
13434         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
13435         address of the GOT, and referencing entries in the GOT.
13436
13437         * mini.c: Add code to load the GOT address if needed by an opcode.
13438
13439         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
13440         independent AOT code on the x86 using an elf-style Global Offset Table.
13441
13442 2004-12-14  Raja R Harinath  <rharinath@novell.com>
13443
13444         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
13445
13446 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13447
13448         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
13449         when running xsp.
13450
13451 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
13452
13453         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
13454         of Interlocked:Increment/Decrement/Add as inline ops.
13455         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
13456
13457 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
13458
13459         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
13460         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
13461
13462 2004-12-12  Duncan Mak  <duncan@ximian.com>
13463
13464         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
13465         again. `patch_info->table_size' is no longer valid after Zoltan's
13466         commit #37636.
13467
13468 2004-12-12  Martin Baulig  <martin@ximian.com>
13469
13470         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
13471         if we are the "real" method, ie. not an inlined method inside it.
13472
13473 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
13474
13475         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
13476         before we look in the special fields table. This fixes
13477         ../tests/thread-static-init.cs.
13478
13479 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13480
13481         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
13482         for Array get_Rank and get_Length. Fixes bug #70465.
13483
13484 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
13485
13486         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
13487         separate structure to reduce the size of MonoJumpInfo.
13488
13489 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
13490
13491         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
13492
13493 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
13494
13495         * mini.c (mini_get_inst_for_method): Changed to allow ports
13496         to return a MonoInst instead of opcode 
13497         (renamed mini_get_opcode_for_method to better reflect the new functionality)
13498         
13499         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
13500         Allow ports to return a created MonoInst instead of op-code, will enable
13501         new optimizations.
13502         (renamed mini_get_opcode_for_method to better reflected the functionality)
13503
13504 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
13505
13506         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
13507
13508 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13509
13510         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
13511         Fixes #69985.
13512
13513 2004-12-08  Martin Baulig  <martin@ximian.com>
13514
13515         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
13516         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
13517
13518 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13519
13520         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
13521         correctly.
13522
13523         * exceptions.cs: Disable some tests which depend on properties of x86 fp
13524         arithmetic.
13525
13526 2004-12-08  Raja R Harinath  <rharinath@novell.com>
13527
13528         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
13529
13530 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
13531
13532         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
13533         bug introduced by the previous patch.
13534
13535 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13536
13537         * mini-ppc.c, objectc.cs: handle large structs passed by value
13538         (fixes bug #69972).
13539
13540 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
13541
13542         * mini-ppc.c: OP_ARGLIST implementation from
13543         Geoff Norton  <gnorton@customerdna.com>.
13544
13545 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
13546
13547         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
13548         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
13549
13550 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13551
13552         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
13553
13554 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13555
13556         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
13557         support.
13558
13559 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
13560
13561         * mini-sparc.c: Zero out localled-ed memory.
13562
13563         * iltests.il: Add tests for zeroing out localloc-ed memory.
13564
13565 2004-12-04  Martin Baulig  <martin@ximian.com>
13566
13567         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
13568         mono_method_get_signature_full().       
13569
13570 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
13571
13572         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
13573         and some utility functions (always for SSAPRE), integrated SSAPRE.
13574         * mini.h: Likewise.
13575         * driver.c: Added ssapre option.
13576         * ssa.c: Small fix on OP_ARG handling.
13577         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
13578         * Makefile.am: Likewise.
13579
13580 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
13581
13582         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
13583         now in the xp code.
13584
13585         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
13586         icall.
13587
13588 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13589
13590         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
13591         
13592         * cpu-s390.md : Increase instruction length of oparglist.
13593
13594         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
13595
13596 2004-11-30  Martin Baulig  <martin@ximian.com>
13597
13598         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
13599         virtual generic methods.  We call a special helper_compile_generic_method()
13600         icall to retrieve the method from the vtable, inflate and compile
13601         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
13602
13603         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
13604
13605 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
13606
13607         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
13608
13609 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
13610
13611         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
13612         Fixes #69929.
13613
13614 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
13615
13616         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
13617         platforms with PIC aot.
13618
13619 2004-11-28  Martin Baulig  <martin@ximian.com>
13620
13621         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
13622         Fixes gen-112.cs.
13623
13624 2004-11-28  Martin Baulig  <martin@ximian.com>
13625
13626         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
13627         the result of mono_type_get_underlying_type() to check whether
13628         we're byref.
13629
13630 2004-11-26  Martin Baulig  <martin@ximian.com>
13631
13632         * mini.c
13633         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
13634         in the g_assert().
13635
13636 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
13637
13638         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
13639         the same way as the other arguments so they won't get clobbered.
13640
13641         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
13642         calls through R11 since it is clobbered by the trampoline code.
13643
13644 2004-11-26  Raja R Harinath  <rharinath@novell.com>
13645
13646         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
13647         pick up in-tree mscorlib.dll.
13648
13649 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
13650
13651         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
13652
13653         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
13654         runtime data/code are now stored in a table similar to the GOT in ELF. 
13655         This allows the code itself to be position independent.
13656
13657         * aot.c: Fix loading of referenced assemblies after the lazy assembly
13658         loading changes.
13659
13660         * aot.c: Attach ELF type (object/function) directives to all global
13661         symbols.
13662
13663         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
13664
13665         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
13666
13667         * mini-amd64.h: Turn on PIC AOT code.
13668
13669         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
13670         returning the offset within an OP_AOTCONST instruction where the GOT
13671         offset needs to be added.
13672
13673         * mini.h: Bump AOT file format version.
13674
13675 2004-11-25  Martin Baulig  <martin@ximian.com>
13676
13677         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
13678         uninflated generic methods.
13679
13680 2004-11-25  Martin Baulig  <martin@ximian.com>
13681
13682         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
13683
13684 2004-11-24  Martin Baulig  <martin@ximian.com>
13685
13686         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
13687         original klass (this only applies for generic instances).
13688
13689 2004-11-24  Martin Baulig  <martin@ximian.com>
13690
13691         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
13692         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
13693         that array).
13694
13695 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
13696
13697         * mini.c (mono_method_to_ir): Disable inlining for methods containing
13698         localloc. Fixes #69678.
13699
13700         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
13701         
13702 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
13703
13704         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
13705         used SSE registers on pinvoke calls. Fixes #69774.
13706
13707 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
13708
13709         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
13710         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
13711
13712 2004-11-23  Raja R Harinath  <rharinath@novell.com>
13713
13714         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
13715         Refer directly to the mcs/ tree.
13716
13717 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13718
13719         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
13720         Check if a trampoline for a synchronized method is required. 
13721
13722 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
13723
13724         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
13725         with localloc if needed. Throe arithmetric exception in
13726         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
13727         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
13728
13729 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
13730
13731         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
13732         types before switching on type.  Fixes #69622.
13733
13734 2004-11-19  Raja R Harinath  <rharinath@novell.com>
13735
13736         * Makefile.am (check-local): New.  Integrate into 'make check'.
13737         (MCS,RUNTIME): Define using in-tree mono and mcs.
13738         (ILASM): New.
13739         (%.exe): Use $(ILASM).
13740
13741 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
13742
13743         * mini-ppc.c: adjust initial prolog size (bug #69691).
13744
13745 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
13746
13747         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
13748         #69664.
13749
13750 2004-11-17  Raja R Harinath  <rharinath@novell.com>
13751
13752         * Makefile.am (clean-local): Rename from 'clean'.
13753
13754 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13755
13756         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
13757         to mono_arch_is_int_overflow. 
13758         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
13759         SIGFPE events.
13760
13761 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
13762
13763         * declsec.c|h: New files to support declarative security attributes.
13764         Added function to check if a method has (applicable) security.
13765         * mini.c|h: Add check for declarative security attributes in
13766         mono_method_check_inlining.
13767         * Makefile.am: Added declsec.c and declsec.h to the build.
13768
13769 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
13770
13771         * mini.c, mini.h: update to keep dynamic code info per-domain.
13772
13773 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
13774
13775         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
13776         (mini_init): Get rid of it from here too.
13777
13778 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
13779
13780         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
13781         implemented OP_RETHROW (patch by Geoff Norton
13782         <gnorton@customerdna.com>).
13783
13784 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
13785
13786         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
13787         between appdomains.  Fixes appdomain-unload on PPC.
13788
13789 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
13790
13791         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13792         mini-exceptions.c: handle the new wrapper types.
13793         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
13794         token value as a MonoClass* when compiling a wrapper.
13795         mono_jit_create_remoting_trampoline now takes an additional
13796         MonoRemotingTarget parameter.
13797         
13798 2004-11-10  Martin Baulig  <martin@localhost>
13799
13800         * mini.c (mono_method_to_ir): Use `generic_container->context'
13801         rather than creating a new one.
13802
13803 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13804
13805         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
13806
13807         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
13808
13809 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
13810
13811         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
13812         the experimental aot cache stuff.
13813
13814 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
13815
13816         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13817         mini-exceptions.c: update to exception clause structure changes.
13818
13819 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13820
13821         * exceptions-x86.c (throw_exception): Fix warnings.
13822
13823         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
13824         for OP_RETHROW.
13825
13826 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13827
13828         * exceptions-sparc.c (get_throw_exception): Really fix this.
13829
13830 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
13831
13832         * tramp-*.c: we no longer support icalls without wrappers, so
13833         a bit of code can be removed here
13834
13835 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
13836
13837         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
13838         patch.
13839
13840         * cpu-sparc.md: Add op_rethrow.
13841
13842         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
13843
13844         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
13845
13846         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
13847         * mini-ops.h: Add OP_RETHROW.
13848
13849         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
13850
13851         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
13852
13853 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
13854         
13855         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
13856         Makes the output much easier to read
13857
13858 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
13859
13860         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
13861         prevents another huge leak when compiling with ssa. Secondly, the
13862         performance of doing this rather than freeing the lists is much
13863         better. GList does a lock every time you allocate a list link,
13864         so that it can use a memory pool. So, it is better to just use
13865         a memory pool of our own.
13866         
13867         * ssa.c, linear-scan.c: replace g_list_remove_link with
13868         g_list_delete.  The remove one does not free the GList, so we were
13869         leaking memory. On -O=all --compile-all with corlib, this cut down
13870         3 MB of allocations.
13871
13872 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
13873
13874         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
13875
13876         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
13877
13878         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
13879         into a new function mono_create_jit_trampoline ().
13880
13881 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
13882
13883         * trace.c (get_spec): Allow tracing of classes without a namespace.
13884
13885 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
13886
13887         * mini.c: Fix pointer overwrite in mini_method_compile.
13888
13889 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
13890
13891         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
13892         The darwin ABI needs some special handling for 1 and 2 byte structs
13893         Lets use lbz/lhz instead of lwz everywhere.
13894         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
13895         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
13896         Use stb/sth for the former, and put the latter always on stack instead of in
13897         argument registers.
13898
13899 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
13900
13901         * trace.c (is_filenamechar): Add '_'.
13902
13903 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
13904
13905         * mini-s390.c: Fix prolog length to allow for large trace requirements.
13906
13907         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
13908
13909 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
13910
13911         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
13912         depends on libmonogc. Fixes #68805.
13913
13914 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
13915
13916         * mini.c (mono_jit_free_method): Provide extra information for
13917         this error.  Currently this leaks, but will be turned into a
13918         developer option in the future.
13919
13920 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
13921
13922         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
13923
13924 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
13925
13926         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
13927         boundary. Fixes reading of PATCH_INFO_R4 and R8.
13928         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
13929
13930 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
13931
13932         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
13933         trampolines for AOT code.
13934
13935 2004-10-22    <vargaz@freemail.hu>
13936
13937         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
13938         constructed types. Fixes #68136.
13939
13940 2004-10-21  Martin Baulig  <martin@ximian.com>
13941
13942         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
13943         if it returns true, unwind the stack to the call instruction.
13944
13945 2004-10-21    <vargaz@freemail.hu>
13946
13947         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
13948
13949         * mini.h: Bump AOT version number.
13950
13951         * objects.cs: Add another test for unbox trampolines.
13952
13953         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
13954         valuetype methods.
13955
13956 2004-10-20    <vargaz@freemail.hu>
13957
13958         * driver.c: Add SHARED to the set of optimizations tested.
13959
13960         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
13961
13962         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
13963         used by CEE_NEWARR.
13964
13965         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
13966
13967 2004-10-20  Martin Baulig  <martin@ximian.com>
13968
13969         * mini-exceptions.c (mono_handle_exception): Call
13970         mono_debugger_handle_exception() to tell the debugger about
13971         catch/finally clauses.
13972
13973 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
13974
13975         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
13976
13977         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
13978         #68447.
13979
13980 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
13981
13982         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
13983         methods as their native size, fixed bug #57543, #57545.
13984         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
13985         This saves a temporary register and mullw call down into 1 (minor perf
13986         increase for cases like sum = sum * 5;  This use to translate into:
13987             li r11,5
13988             mullw r28,r28,r11
13989         It now translates to
13990             mulli r28,r28,5
13991
13992 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
13993
13994         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
13995         #68388.
13996
13997 2004-10-11  Martin Baulig  <martin@ximian.com>
13998
13999         * mini.c (mono_method_to_ir): If we're a generic method, get the
14000         MonoGenericContainer from our MonoMethodNormal and create a
14001         MonoGenericContext from it.
14002
14003 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
14004
14005         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
14006
14007         * basic-long.cs: Add test for checked i8->i2 cast.
14008
14009 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14010
14011         * inssel-ppc.brg: added a couple of speedup rules.
14012
14013 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
14014
14015         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
14016         to speed up rebuilds.
14017
14018 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14019
14020         * mini-s390.c: Minor fix to OP_OR_IMM.
14021
14022 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
14023
14024         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
14025         better. Fixes appdomain-unload.exe on sparc.
14026
14027 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
14028
14029         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
14030         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
14031         see bug 67324.
14032
14033 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
14034
14035         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
14036
14037 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
14038
14039         * mini.c: Always generate a field read/write wrapper for members
14040         of the class MarshalByRefObject since the actual instance could
14041         be a CBO.
14042
14043 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
14044
14045         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
14046
14047 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
14048
14049         * driver.c mini.h trace.c: Move the setting of the main assembly into
14050         a separate function called mono_trace_set_assembly () and call it after
14051         actually loading the main assembly. Fixes #66872.
14052
14053 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
14054
14055         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
14056         using the code manager.
14057
14058 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
14059
14060         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
14061
14062 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
14063
14064         * cpu-amd64.md: Fix bug in previous patch.
14065         
14066         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
14067         #66650.
14068
14069 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
14070
14071         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14072         mini-exceptions.c: updates for changed stack walk interface.
14073
14074 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14075
14076         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
14077
14078 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
14079
14080         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
14081
14082 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
14083
14084         * driver.c (mini_regression_list): Do not call mono_assembly_close 
14085         since assemblies can't be unloaded.
14086         
14087 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14088
14089         * cpu-amd64.md: Fix more instruction lengths.
14090
14091         * cpu-amd64.md: Fix lengths of some instructions.
14092
14093 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
14094
14095         * inssel.brg: Make the array ldelema check aot friendly.
14096
14097 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14098
14099         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
14100
14101         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
14102
14103 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
14104
14105         * mini-x86.c: Fix build.
14106
14107         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
14108         mono_type_get_underlying_type () helper function to simplify code.
14109         
14110 2004-09-09  Martin Baulig  <martin@ximian.com>
14111
14112         * mini-amd64.c: Don't access `type->data.klass' directly, call
14113         mono_class_from_mono_type() instead since the type may be a
14114         generic instance.
14115
14116 2004-09-09  Martin Baulig  <martin@ximian.com>
14117
14118         * mini-amd64.c (get_call_info): Fix support for generic instances.
14119         (add_valuetype): Use mono_class_from_mono_type() to get the class
14120         since we can be a generic instance.
14121
14122 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
14123
14124         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
14125
14126 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
14127
14128         * liveness.c: reset spill costs on each scan: bug 62107
14129
14130 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
14131
14132         * exceptions-sparc.c (mono_arch_find_jit_info): remove
14133         unnecessary line that doesn't compile
14134
14135 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
14136
14137         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
14138         trampolines, make them call an error function so people can fix their
14139         code.
14140
14141 2004-09-06  Martin Baulig  <martin@ximian.com>
14142
14143         * mini.c (mono_method_to_ir): When initializing locals, handle a
14144         generic instances like a valuetype if it's a valuetype and like a
14145         class if it's a class.
14146
14147 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14148
14149         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
14150         stack. Fixes #64674.
14151
14152         * exceptions.cs: Add test for unwinding of call arguments.
14153
14154 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
14155
14156         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
14157         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
14158         set the carry/borrow flag). The sparc and s390 implementations
14159         can now use optimized versions (and simplify the code). ppc bugfixes.
14160
14161 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14162
14163         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
14164
14165 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
14166
14167         * inssel-amd64.brg: Remove leftover 32 bit rule.
14168
14169         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
14170
14171 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
14172
14173         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
14174         mono_arch_find_jit_info functions into a new function. Fix a memory
14175         leak.
14176
14177         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
14178         refactored code.
14179         
14180 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14181
14182         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
14183         as well.
14184         
14185         * exceptions.cs: Add array size tests.
14186
14187         * mini.c: Allocate a separate icall wrapper for each arity of 
14188         mono_array_new_va. Fixes #59509.
14189
14190         * exceptions.cs: Add testcase for 64578.
14191
14192         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
14193
14194         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
14195         
14196 2004-09-02  Martin Baulig  <martin@ximian.com>
14197
14198         * mini.c (mono_method_to_ir): When initializing the locals, call
14199         handle_initobj() on the generic instance itself, not its
14200         underlying type.
14201
14202 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14203
14204         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
14205         MonoJitInfo for dynamic methods.
14206
14207         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
14208
14209         * mini.c: Add support for freeing JIT data for dynamic methods.
14210         
14211 2004-09-01  Martin Baulig  <martin@ximian.com>
14212
14213         * mini-x86.c (is_regsize_var): Added support for generic
14214         instances.
14215         (mono_arch_emit_prolog): Make this compile again, use
14216         `x86_push_imm_template (code)'.
14217
14218 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
14219
14220         * mini-x86.c: make all push_imm instructions that get
14221         patched always emit the long form
14222
14223 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
14224
14225         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
14226         in a per-domain hash.
14227
14228         * mini-amd64.c (merge_argument_class_from_type): Handle generic
14229         types.
14230
14231 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
14232
14233         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
14234         work.
14235         
14236         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
14237         work.
14238
14239         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
14240         Beginnings of SSE2 support.
14241
14242         * exceptions.cs: Add more tests for checked int<->uint casts.
14243
14244 2004-08-28  Martin Baulig  <martin@ximian.com>
14245
14246         * mini-x86.c (mono_arch_instrument_epilog): Added support for
14247         generic instances.
14248
14249         * mini.c
14250         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
14251         Handle generic instances recursively.
14252
14253 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14254
14255         * iltests.il: test for conv.u8 on a constant
14256
14257 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14258
14259         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
14260         LCONV_x4 (shrun_32 (membase)).
14261
14262 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14263
14264         * inssel-x86.brg: c&p rules for push/setret of long
14265
14266 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14267
14268         * inssel-x86.brg: c&p rules for compare (base, regvar) and
14269         compare (regvar, base)
14270
14271         * inssel-x86.brg: more burg love
14272
14273         * inssel.brg: more cleanup
14274
14275         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
14276
14277 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14278
14279         * basic-long.cs, basic-calls.cs: new tests for optimization.
14280
14281 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
14282
14283         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
14284         patch.
14285
14286 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14287
14288         * mini-amd64.c (read_tls_offset_from_method): Add another case.
14289         
14290 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
14291
14292         * inssel.brg (mini_emit_memcpy): use 
14293         NO_UNALIGNED_ACCESS to disable memcpy optimization
14294
14295 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14296
14297         * mini-amd64.c: Handle generic types in various places.
14298
14299         * mini.c (mono_method_to_ir): Handle generic types in init locals.
14300
14301 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
14302
14303         * mini.c (handle_box): Fix warning.
14304
14305         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
14306
14307         * mini-amd64.h: Enable the emit_state optimization.
14308
14309         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
14310
14311         * mini-amd64.c: Add some new 64 bit peephole opts.
14312
14313         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
14314
14315         * cpu-amd64.md: sreg1 of div instructions must be %rax.
14316
14317         * mini-amd64.c: Register allocator fixes.
14318
14319         * mini.c: Add an optimization to emit_state to avoid allocation of new
14320         registers on some platforms.
14321
14322 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
14323
14324         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
14325
14326         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
14327         allocation. Fixes #63085.
14328
14329         * basic-long.cs: Add new regression test.
14330
14331         * mini-amd64.c: Register allocator improvements.
14332
14333 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
14334
14335         * mini-amd64.c (read_tls_offset_from_method): Add another code
14336         sequence.
14337
14338         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
14339         instruction sequence for nullifying class init trampolines.
14340
14341         * objects.cs: Add new regalloc test.
14342
14343         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
14344
14345 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14346
14347         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
14348         
14349         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
14350         arguments.
14351
14352         * driver.c: Fix profiling after TLS changes.
14353         
14354         * driver.c (mono_main): Set mono_stats.enabled if needed.
14355
14356         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
14357         CEE_BOX.
14358
14359 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
14360
14361         * mini-x86.c: use a 1 op rather than a 2 op tls access
14362         instruction -> faster.
14363
14364 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14365
14366         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
14367         x86 backend.
14368
14369 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
14370
14371         * exceptions-sparc.c (throw_exception): fix typo
14372
14373 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
14374
14375         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
14376         set tree->dreg correctly with tls. Allow any
14377         register to be used.
14378
14379         * mini-x86.c (read_tls_offset_from_method): add new code
14380         generation pattern seen with GCC.
14381
14382
14383 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
14384
14385         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
14386         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14387         exceptions-sparc.c: fix some performance issues in exception
14388         handling and setting of the stack trace for exceptions that were
14389         already thrown.
14390
14391 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14392
14393         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
14394         x86 backend.
14395         
14396         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
14397         registers.
14398
14399 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
14400
14401         This patch inlines tls access, when possible.
14402         
14403         * mini.h: new arch functions for TLS intrinsics.
14404         All platforms updated with a stub.
14405
14406         * mini.c: use the new intrinsics
14407
14408         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
14409         arch specific intrinsic for tls variables
14410
14411 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14412
14413         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
14414         under windows.
14415
14416 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14417
14418         * mini.c: thread local allocation
14419
14420 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
14421
14422         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
14423
14424         * Makefile.am: Link against the static version of libmonogc.
14425         
14426         * Makefile.am: Link the static versions of the convenience libraries
14427         into the mono executable.
14428
14429         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
14430
14431 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
14432
14433         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
14434         on integer overflow.
14435
14436         * mini-amd64.c: Reorganize function call code.
14437
14438         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
14439
14440 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14441
14442         * inssel-x86.brg: use xor eax,eax.
14443         
14444         * basic.cs: new tests
14445
14446 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14447
14448         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
14449         in exception throwing code.
14450         
14451 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14452
14453         * inssel-x86.brg: use xor esi,esi.
14454
14455 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14456
14457         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
14458         can trace methods compiled during mini_init () too.
14459
14460         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
14461         CEE_CONV_U4.
14462
14463 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14464
14465         * Makefile.am: static link on x86 (r=zoltan)
14466
14467 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14468
14469         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
14470         code since it causes some programs to fail.
14471
14472 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
14473
14474         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
14475
14476 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14477
14478         * mini.c: ovfops_op_map - add STACK_OBJ case for
14479         CONV_I 
14480         * basic.cs: add test_0_pin_string as test
14481         case for above.
14482
14483 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14484
14485         * Makefile.am: build C# if srcdir != builddir
14486
14487 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
14488
14489         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
14490         fall-through blocks.
14491
14492 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
14493
14494         * driver.c: enable loop by default again and include abcrem in -O=all.
14495
14496 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
14497
14498         * iltests.il: Add some localloc tests.
14499
14500         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
14501
14502         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
14503         Fixes #62574.
14504
14505         * inssel-amd64.brg: Add some optimizations.
14506
14507         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
14508         for gcc-3.4.
14509
14510         * Makefile.am: Statically link mono against libmono on AMD64.
14511         
14512         * mini-amd64.c inssel-amd64.brg: Optimizations.
14513
14514 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
14515
14516         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
14517
14518         * tramp-amd64.c: Patch calling code in trampolines.
14519
14520 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
14521
14522         * mini-amd64.c: pinvoke struct passing fixes.
14523
14524 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
14525
14526         * mini-sparc.c: redo change, make mono_arch_cpu_init call
14527         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
14528
14529 2004-08-05  Duncan Mak  <duncan@ximian.com>
14530
14531         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
14532         CEE_LDELEM_ANY.
14533
14534 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14535
14536         * mini-amd64.c (emit_move_return_value): Move return value for normal
14537         calls too.
14538
14539 2004-08-05  Martin Baulig  <martin@ximian.com>
14540
14541         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
14542         `type->type'; just modify `type' itself when dealing with enums
14543         and generic instances.
14544         (check_call_signature): Make `simple_type' a `MonoType *'.
14545
14546 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14547
14548         * mini.c: Use OP_PADD to add offsets to addresses.
14549
14550         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
14551
14552 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
14553
14554         * mini-sparc.c (mono_arch_emit_epilog): fix check
14555         for folding last op into restore instruction
14556
14557 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14558
14559         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
14560         helper methods using the code manager.
14561         
14562         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
14563
14564         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
14565
14566 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14567         
14568         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
14569           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
14570
14571         * mini-s390.c: fix tail processing
14572
14573 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
14574
14575         * mini-ppc.c: mul.ovf.un exception name fix.
14576
14577 2004-08-03  Martin Baulig  <martin@ximian.com>
14578
14579         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
14580         instances; before jumping to `handle_enum', also modify `ptype'.
14581
14582 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
14583
14584         * cpu-sparc.md: fcall maximal length too small.
14585
14586 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
14587
14588         * mini-amd64.c mini.h: Add initial support for passing/returning 
14589         structures to/from pinvoked methods.
14590
14591 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
14592
14593         * mini-ppc.c: reg allocator fix.
14594
14595 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
14596
14597         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
14598
14599         * inssel.brg: Optimize memset on 64 bit machines.
14600
14601         * mini-amd64.c: Fix some vararg cases.
14602
14603 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14604
14605         * mini-s390.c: Corrected macro in emit_float_to_int
14606
14607         * s390-abi.cs: Tests to exercise the s390 ABI
14608
14609 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14610
14611         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
14612         caller saved regs.
14613
14614         * basic.cs: Add a test for add.ovf.un.
14615
14616 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
14617
14618         * mini-sparc.c: add case for OP_IDIV_UN
14619
14620 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14621
14622         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
14623         
14624         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
14625
14626 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
14627
14628         * basic.cs: regression tests.
14629
14630         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
14631         regressions.
14632
14633 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14634
14635         * basic.cs: Add a new test.
14636
14637         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
14638         and AOT. Various fixes and optimizations.
14639
14640         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
14641
14642 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
14643
14644         * mini-ppc.c: make sure temp regs are not used for global reg
14645         allocation.
14646
14647 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
14648
14649         * cpu-sparc.md: conv_i8 fix for 64bits
14650
14651         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
14652
14653 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
14654         
14655         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
14656         add opcode for cmp BYTE PTR [eax], imm.
14657
14658         * inssel.brg: Make memcpy and memset takes bases.
14659
14660 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14661
14662         * *-amd64.*: More AMD64 work.
14663         
14664 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14665
14666         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
14667         add a compare-not-equal opcode.
14668         
14669 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
14670
14671         * mini.c: Use mono_init_from_assembly instead of mono_init.
14672         
14673 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14674
14675         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
14676
14677         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
14678
14679         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
14680
14681         * inssel.brg: 64 bit fixes.
14682
14683         * mini.h (MonoCallInst): Add some AMD64 specific data.
14684
14685         * mini.h: Add some OP_P opcodes.
14686
14687 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14688
14689         * basic.cs: tests for 61797 and 61740
14690
14691 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
14692
14693         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
14694         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
14695
14696 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
14697
14698         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
14699
14700         * *-amd64*.*: Ongoing AMD64 work.
14701
14702 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
14703
14704         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
14705
14706         * *-amd64*: Ongoing AMD64 work.
14707
14708         * mini-arch.h: Add AMD64 support.
14709
14710         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
14711
14712         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
14713
14714         * mini-ops.h: Add new opcodes.
14715
14716         * Makefile.am: Add AMD64 support.
14717
14718         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
14719         rules into the inssel-long*.brg files.
14720
14721         * *-amd64.*: Add beginnings of AMD64 backend.
14722
14723 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
14724
14725         * mini.c (print_dfn): commenting out the code that prints
14726         the cil. With -O=deadce, this makes -v -v crash.
14727         
14728         * cpu-pentium.md: make checkthis have a length of 2
14729
14730 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
14731
14732         * mini-sparc.h: fix implementations of __builtin
14733         functions for Sun compiler for V9.
14734
14735 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
14736
14737         * mini.c: use the new stelem.ref wrapper
14738         * exceptions.cs, arrays.cs: new stelem.ref tests
14739
14740 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14741
14742         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
14743         new XSP should work with these changes).
14744
14745 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
14746         
14747         * inssel-{long32,x86,}.brg: trivial optimizations.
14748         
14749 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
14750
14751         * mini.c: load value when emitting box operation in
14752         constrained calls.
14753
14754 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
14755
14756         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
14757         is one byte shorter than cmp DWORD PTR [eax], 0.
14758
14759 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
14760
14761         * inssel-ppc.brg: arguments on the stack are always
14762         relative to the stack pointer (spotted by Neale Ferguson).
14763
14764 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14765
14766         * exceptions-x86.c: delay appending the method name to the trace until
14767         after mono_jit_info_table_find is called, as this gets the real
14768         MonoMethod.
14769
14770 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
14771
14772         * aot.c: register roots
14773
14774 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14775
14776         * aot.c : I could just use PLATFORM_WIN32 flag.
14777
14778 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14779
14780         * aot.c : Reverting the previous fix. This time it broke linux build.
14781
14782 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14783
14784         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
14785
14786 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
14787
14788         * mini.c (handle_stack_args): Remove some more debugging code.
14789         
14790         * mini.c (handle_stack_args): Remove debug output left in by mistake.
14791
14792         * driver.c mini.h aot.c: Allow additional options to be specified with
14793         --aot and pass them to mono_compile_assembly.
14794
14795         * aot.c: Add experimental code to AOT compile all loaded assemblies
14796         on demand and save the code into a cache in the filesystem.
14797
14798         * aot.c: Add support for more wrapper methods.
14799         
14800         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
14801         58863.
14802
14803         * cpu-*.md: Remove removed opcodes.
14804
14805         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
14806         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
14807         related icalls to marshal.c.
14808
14809 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
14810
14811         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
14812
14813         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
14814
14815         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
14816
14817 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
14818         * liveness.c: If liveness is recomputated we need to reset the information
14819         for each variable. This way, if the liveness range has been narrowed
14820         by optimizations that happened after the last computation, we can return
14821         a smaller range.
14822         
14823         For example, if you have
14824         
14825         {
14826                 int i = 0;
14827                 
14828                 // Tons of code that does not affect i
14829                 
14830                 i = foo ();
14831                 ...
14832         }
14833         
14834         i = 0 is dead code and will be removed by SSA. However, when
14835         linear scan gets to the code, i will still appear to be live
14836         throughout the entire block. This prevents good register allocation.
14837
14838 2004-07-06  Martin Baulig  <martin@ximian.com>
14839
14840         * debug-mini.c (mono_debug_init_method): Allow
14841         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
14842         (mono_debug_add_icall_wrapper): New method.
14843
14844         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
14845
14846 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
14847
14848         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
14849         optimization.
14850
14851 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
14852
14853         * aot.c (mono_aot_load_method): Fix loading of debug info.
14854
14855 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14856
14857         * aot.c: Add logging support.
14858
14859 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14860
14861         * mini.h: Add prototype for mono_print_method_from_ip.
14862
14863         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
14864
14865         * inssel.brg: 64 bit fixes.
14866
14867         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
14868         inssel-long32.brg.
14869
14870         * Makefile.am: Add SPARC64 support.
14871
14872 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14873
14874         * aot.c: Fix alignment problems on 32 bit platforms.
14875
14876 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14877
14878         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
14879         SPARC64.
14880
14881         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
14882         problems.
14883
14884         * mini.h: Bump AOT file version. Some 64 bit fixes.
14885
14886 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14887
14888         * inssel-sparc.brg: Add new rule to avoid register moves.
14889
14890         * inssel.brg: Add ldind_to_load_membase helper function.
14891
14892 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
14893
14894         * mini.c: OffsetToStringData intrinsic.
14895         
14896 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14897
14898         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
14899
14900         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
14901         regression tests.
14902
14903         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
14904 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
14905
14906         * mini.c: reinstated mono_compile_get_interface_var()
14907         on x86, too, since the change breaks the Gtk# build there as well.
14908
14909 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14910
14911         * driver.c: remove loop from the default optimizations: it seems to
14912         interact badly with some of the other options (see bug #60613).
14913
14914 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
14915
14916         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
14917         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
14918
14919 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
14920
14921         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
14922         vararg-using methods.
14923
14924 2004-06-21  Martin Baulig  <martin@ximian.com>
14925
14926         * mini/mini-exceptions.c
14927         (mono_handle_exception): Added `gpointer original_ip' argument.
14928         After calling mono_unhandled_exception(), call
14929         mono_debugger_unhandled_exception() and if that returns true,
14930         restore the context and return.
14931
14932 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
14933
14934         * mini-ppc.c: prefer the use of relative branches so
14935         they won't need to be patched in aot code (patch from Patrick Beard).
14936
14937 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
14938
14939         * aot.c: patch from Patrick Beard to make the output assembly
14940         more correct for the MacOSX assembler. Small tweak to
14941         generate sane images on Linux/PPC, too.
14942
14943 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14944
14945         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
14946         case until bug #59509 is fixed (shows up in #60332).
14947
14948 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
14949
14950         * mini.c: make sure the needed wrappers are compiled, too, with
14951         precomp.
14952
14953 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
14954
14955         * driver.c: remove NPTL reference in --version output.
14956
14957 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14958
14959         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
14960         generate valid assembly for the Mach-O assembler.
14961
14962 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
14963
14964         * driver.c: don't include abcrem in the all optimization specifier
14965         since it slows down jit compilation too much for now.
14966
14967 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
14968
14969         * mini.c: use BIGMUL only if both operands have the same signage.
14970         * iltests.il: Test for bug 60056. (errors related to signage in
14971         BIGMUL).
14972
14973         r=lupus.
14974
14975 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
14976
14977         * mini.c, aot.c: memory leak fixes.
14978
14979 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
14980
14981         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
14982
14983 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
14984
14985         * Makefile.am: remove the -static hack completely, it links in
14986         statically glib as well.
14987
14988 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
14989
14990         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
14991         * exceptions.cs: make it compile with new mcs/csc.
14992
14993 2004-06-03 Massimiliano Mantione <massi@ximian.com>
14994         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
14995         and added relevant test case.
14996
14997 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
14998
14999         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
15000         regressions in gtk-sharp.
15001
15002 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
15003
15004         * exceptions.cs: New regression tests.
15005
15006         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
15007
15008 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
15009
15010         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
15011
15012 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
15013
15014         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
15015
15016         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
15017
15018 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
15019
15020         * mini.c (mono_jit_runtime_invoke): Init class in this
15021         method instead of trusting mono_jit_compile_method to
15022         do the work (because wrappers can be in object class)
15023
15024 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
15025
15026         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
15027
15028         * basic-long.cs: New regression test.
15029
15030 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
15031
15032         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
15033         and div/rem checks.
15034
15035 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
15036
15037         * Makefile.am: fix miguel's change to build mono statically against
15038         libmono (track build dependencies).
15039
15040 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15041
15042         * cfold.c: Some glib versions do not have G_MININT32.
15043
15044 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
15045
15046         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
15047         with precision of tan, atan, sin and cos, and implemented related
15048         regressions tests (fixes bug 54467, but one new problem appeared and
15049         is not fixed yet).
15050
15051 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15052
15053         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
15054
15055         * exceptions.cs: Add test for constant folding && division by zero.
15056
15057         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
15058         since driver.c is in libmono too, so the optimization was useless.
15059
15060         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
15061         variable to driver.c so the compiler can emit more efficient code to
15062         access them.
15063
15064 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15065
15066         * Makefile.am: don't distribute generated inssel.[ch] files.
15067
15068 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
15069
15070         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
15071         into the default appdomain. Fixes #58707.
15072
15073         * jit-icalls.c: Remove the broken approximation for truncl, doing
15074         no conversion is better.
15075
15076         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
15077         Fixes #58863.
15078
15079 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
15080
15081         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
15082         of the mcrxr instruction which is not available on some processors
15083         even if it's documented to be. Implement add and sub overflow correctly
15084         (still not complete for long unsigned). Speed up icalls a bit.
15085
15086 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
15087
15088         * mini.c (mono_jit_compile_method_with_opt): Make sure that
15089         we run .cctor in the current domain instead of target_domain.
15090         
15091         Fixes bug #58558, .cctor not being called in -O=shared.
15092
15093 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15094
15095         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
15096
15097 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
15098
15099         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
15100         which can be done with an imm8, do it that way.
15101         (mono_arch_output_basic_block): ditto for a jmp
15102         (mono_arch_emit_prolog): Computate maximum offset of a label.
15103
15104 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
15105
15106         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
15107         now tries to allocate prefered physical reg's for virtual
15108         regs. This reduces the number of emited spills/loads with
15109         20-30% on our core assemblies.
15110
15111 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15112
15113         * jit-icalls.c: truncl() is not needed and trunc() is
15114         the correct thing to do anyway (bug #58287).
15115
15116 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
15117
15118         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
15119         if available.
15120
15121 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
15122
15123         * driver.c: enable loop optimizations by default.
15124
15125 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
15126
15127         * mini-x86.c: fix calc of max loop size when aligning loops start.
15128
15129 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
15130
15131         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
15132         the stack.
15133
15134 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
15135
15136         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
15137         should set carry.
15138
15139         * basic-long.cs: Add tests for add/subtract of immediates with carry.
15140
15141         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
15142         
15143         * mini.c (inline_method): Allways inline some wrappers even if the cost
15144         is too large. Fixes #58785.
15145
15146         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
15147         
15148 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
15149
15150         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
15151         (crichton@gimp.org). Beginning of support for sparc/linux.
15152
15153         * mini-sparc.c: Optimize retrieval of LMF address.
15154
15155 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
15156
15157         * exceptions-ppc.c:  handle alloca in methods with clauses.
15158
15159 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
15160
15161         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
15162
15163 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
15164
15165         * mini.c: Delegate most of the abort signal work to 
15166           mono_thread_request_interruption, which also handles Stop and Suspend
15167           states.
15168
15169 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
15170
15171         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
15172         supports the save/restore lmf opcodes.
15173
15174 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
15175
15176         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
15177         by gcc-3.4 as well.
15178
15179         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
15180
15181 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15182
15183         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
15184         methods which contain array accesses.
15185
15186         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
15187         boundaries. Fixes #58537.
15188
15189         * iltests.il: Add regression test for #58537.
15190
15191 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
15192
15193         * mini-x86.c (mono_arch_local_regalloc): Last part of
15194         fix for bug #58633 (releasing register to early).
15195
15196 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
15197
15198         * basic-long.cs: Add new regression test.
15199
15200 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
15201
15202         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
15203         register too early on the chain.
15204
15205 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15206
15207         * mini.c (create_helper_signature): Use a helper function to reduce
15208         the code which needs to be written. Also set the calling convention of
15209         icalls on windows. Fixes #57840.
15210
15211 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
15212
15213         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
15214         exceptions-ppc.c: added helper function to get the instruction address
15215         from a signal handler context.
15216
15217 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15218
15219         * helpers.c: use g_get_tmp_dir. Invokes happyness 
15220         from gonzalo.
15221
15222 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15223
15224         * helpers.c: Add new env variable to pass args to objdump.
15225         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
15226
15227 2004-05-17  Radek Doulik  <rodo@ximian.com>
15228
15229         * Makefile.am (common_sources): added abcremoval.h so it get
15230         disted and daily mono packages on go-mono.com will build again
15231
15232 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
15233
15234         * abcremoval.c: Fixed coding style, added copyright header.
15235
15236         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
15237
15238         * mini.h: Added prototype for abc removal main function.
15239
15240         * build_relations_propagation_table.pl: Added copyright header.
15241
15242 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
15243
15244         * basic-long.cs: reg test for complex ceq_long bug.
15245
15246 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
15247
15248         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
15249         reg in long and clob case (bug #58343). Fixed/added comments.
15250
15251 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
15252
15253         * mini.c (mono_jit_runtime_invoke): Follow new convention
15254         of calling the invoke method with an function pointer.
15255
15256 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
15257
15258         * ChangeLog: Fix author of memory leak patch.
15259
15260 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
15261
15262         * Makefile.am: fix make dist as well...
15263
15264
15265 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
15266
15267         * cfold.c: Made so that conversions from pointer to int4 are no-ops
15268         on archs where pointers are 4 bytes long.
15269
15270         * Makefile.am: Added abcremoval.c source file.
15271
15272         * abcremoval.c: Added abcremoval.c.
15273
15274         * abcremoval.h: Added abcremoval.h.
15275
15276         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
15277
15278         * inssel.brg: Enabled bounds check removal.
15279
15280         * mini.c: Added support for abcrem optimization.
15281
15282         * mini.h: Added abcrem optimization label.
15283
15284         * driver.c: Added support for abcrem optimization.
15285
15286         * propagated_relations_table.def: Added propagated_relations_table.def.
15287
15288 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
15289
15290         * mini.c, cfold.c: fix style.
15291
15292 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15293
15294         * mini.c: handle issue with the low-level implementation of
15295         some long opcodes (bug #54209).
15296
15297 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
15298
15299         * basic.cs: test for my new cmov stuff.
15300
15301 2004-05-13      Patrik Torstensson
15302
15303         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
15304         opt and added peephole documentation.
15305
15306 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
15307
15308         * tramp-ppc.c: rewrote the generic trampoline code.
15309
15310 2004-05-11      Patrik Torstensson
15311
15312         * mini-x86.c: optimize long shl/shr asm code (one less branch)
15313
15314 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
15315
15316         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
15317
15318         * mini.h mini.c dominators.c: Applied patch from Derek Woo
15319         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
15320
15321         * mini.c: Add new icalls for AsAny marshalling.
15322
15323 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
15324
15325         * tramp-ppc.c, mini-ppc.c: more cleanups.
15326
15327 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15328
15329         * mini.c: no warnings.
15330
15331 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15332
15333         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
15334
15335 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
15336
15337         * mini.c: In the thread abort signal handler, if the thread is in the
15338         process of being stoped, don't throw the Abort exception, just stop the
15339         thread.
15340
15341 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
15342
15343         * tramp-ppc.c: removed old code.
15344
15345 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15346
15347         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
15348         do some simple speed optimizations on ppc.
15349
15350 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
15351
15352         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
15353         and large offsets in load/store.
15354
15355 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15356
15357         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
15358         it causes regressions.
15359
15360 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15361
15362         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
15363         support.
15364
15365 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15366
15367         * jit-icalls.c: remove warnings.
15368         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
15369         speedups for unsafe code.
15370
15371 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
15372
15373         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
15374
15375 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
15376
15377         * basic-calls.cs: Add new regression test.
15378
15379         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
15380         more portable.
15381
15382         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
15383
15384         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
15385         is no longer used.
15386
15387 2004-05-06      Patrik Torstensson
15388
15389         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
15390         long reg allocation in any reg (not only eax:edx) and implemented 
15391         long shl/shr ops in asm instead of helpers.
15392
15393 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
15394
15395         * mini-sparc.h: Fix warnings.
15396
15397         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
15398         stack.
15399
15400         * mini-exceptions.c (mono_handle_exception): Call the filter in a
15401         separate statement for clarity.
15402
15403         * mini-sparc.c: Update status.
15404
15405 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
15406
15407         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
15408         here.
15409
15410 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15411
15412         * inssel-ppc.brg: another small pre-release workaround:
15413         we don't do overflow detection for long_sub_un.
15414
15415 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15416
15417         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
15418         (also works around a weird ppc bug: 57957).
15419
15420 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
15421
15422         * tramp-ppc.c: trampoline fixes.
15423
15424 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
15425
15426         * mini-ppc.c: fixed typos.
15427
15428 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
15429
15430         * mini-ppc.c, exceptions-ppc.c: more code saves registers
15431         at the top of the stack. Fixed typos. Use a frame registers
15432         for all the methods with exception clauses.
15433
15434 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15435
15436         * exceptions-ppc.c: restore fp registers.
15437
15438 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
15439
15440         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
15441         order from the stack top (moved the stack room to save the
15442         return value for trace after the param area). Fixed corruption
15443         in restoring registers on unwind.
15444
15445 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15446
15447         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
15448
15449 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15450
15451         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
15452         and prolog/epilog for methods that use it. Allow
15453         enough param area room for varargs methods. Fix miguel's
15454         breakage in exception handling.
15455
15456 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15457
15458         * Makefile.am: run genmdesc only on current arch.
15459
15460 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15461
15462         * exceptions-x86.c:
15463         * mini-x86.h: fix the build on windows.
15464
15465 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
15466
15467         * 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.
15468
15469         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
15470
15471         * mini-exceptions.c: New file.
15472         
15473         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
15474         Move some parts of the x86 exception handling code to an 
15475         arch-independent file so it can be shared with other ports.
15476
15477 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
15478
15479         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
15480
15481 2004-04-26  David Waite  <mass@akuma.org>
15482
15483         * driver.c: remove comma from end of enumeration declaration
15484
15485 2004-04-26  Jackson Harper  <jackson@ximian.com>
15486
15487         * driver.c: parse config file before loading first assembly. This
15488         allows the user gac to be enabled/disabled. 
15489         
15490 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
15491
15492         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
15493         simpler mechanism: we do not care what is encoded initially
15494         (branch absolute or relative), we care about the code and its
15495         target.  I kept the old code for reference for now.
15496
15497         The new code tries first to determine if the jump is anywhere in
15498         the -/+32 absolute meg range, if it succeeds, it encodes using the
15499         absolute branch;  If not, it tried to find something in the
15500         relative range, if not, it uses the handle_thunk code. 
15501
15502 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
15503
15504         * exceptions-ppc.c: use the correct ip register on macosx.
15505
15506 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
15507
15508         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
15509
15510 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
15511
15512         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
15513         Raise exception on integer divide by zero by hand since the hw
15514         doesn't support it. Handle NaNs in FP compares.
15515
15516 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
15517
15518         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
15519         code reducing duplication between the platforms and enabled
15520         signal exception handling (on linux for now).
15521
15522 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
15523
15524         * exceptions-ppc.c: more macosx support.
15525
15526 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15527
15528         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
15529
15530 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
15531
15532         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
15533
15534 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
15535
15536         * iltests.il: more tests.
15537
15538 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15539
15540         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
15541         vars as well.
15542
15543 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
15544
15545         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
15546
15547 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15548
15549         * liveness.c: Mark variables as volatile in all basic blocks reachable
15550         from exception clauses.
15551
15552 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
15553
15554         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
15555         inlining.
15556
15557 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
15558
15559         * iltests.il, basic.cs: more tests for regalloc.
15560
15561 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15562
15563         * iltests.il: Some tests for register allocation modifications
15564         I have locally.
15565
15566 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
15567
15568         * exceptions.cs: Add regression test for bug #56782.
15569
15570         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
15571         original stack trace if an exception is rethrown. Fixes #56782. Oh,
15572         the beauty of fixing the same thing in 5 different files...
15573
15574 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
15575
15576         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
15577         methods.
15578
15579 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
15580
15581         * mini.c: Add support for STRWLPARRAY marshalling convention.
15582
15583 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
15584
15585         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
15586         to init the context to setup the regs pointer).
15587
15588 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15589
15590         * exceptions-ppc.c: more exceptions work.
15591
15592 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15593
15594         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
15595         not allowed.
15596
15597 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15598
15599         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
15600         can use the memory directly.
15601
15602         * cpu-pentium.md: Update documentation from a post from Zoltan. 
15603
15604         add x86_add_membase, x86_sub_membase, x86_mul_membase
15605
15606 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15607
15608         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
15609         GENERAL_REGS they were also hardcoded for all PPC ports.
15610
15611         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
15612
15613         Remove hard-coded limit for floating point registers, use
15614         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
15615
15616         Notice that in MacOS X calling conventions you can fit a lot more
15617         floating point values in registers, so I should update the PInvoke
15618         test to excercise the passing of floating point values on the
15619         stack (currently broken).
15620         
15621 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
15622
15623         * tramp-ppc.c (create_trampoline_code): Added
15624         JUMP_TRAMPOLINE_SIZE. 
15625         (ppc_magic_trampoline): Follow the pattern from
15626         x86_magic_trampoline: if code is set to zero, return. 
15627         (create_trampoline_code): Always pass MonoMethod to the jump
15628         trampoline, before it was passing a null.
15629         (mono_arch_create_jump_trampoline): Implement the jump stub, could
15630         share the code with mono_arch_create_jit_trampoline. 
15631
15632         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
15633         implemented.
15634         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
15635         implemented.  
15636
15637         * cpu-g4.md: Added length for jmp instruction, the worst case
15638         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
15639         for save_lmf).
15640
15641 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
15642
15643         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
15644
15645 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
15646
15647         * mini.c: Only set bblock->real_offset when adding a new bblock, and
15648         before each IL instruction.
15649
15650         * mini.c (CEE_BOX): Fix warnings.
15651
15652 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15653
15654         * mini.c: removed a few unused vars and extra whitespace.
15655
15656 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
15657
15658         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
15659         checks.
15660         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
15661         index.
15662         (OP_GETCHR): use the above
15663         (CEE_LDELEMA): use the above.
15664
15665         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
15666         version of the generic impl.
15667         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
15668         (CEE_LDELEMA): use the above.
15669
15670 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15671
15672         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
15673         Fixes #56317.
15674
15675         * iltests.il: Added new regression test for #56317.
15676
15677 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15678
15679         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
15680         under NetBSD. Fixes #56450.
15681
15682         * liveness.c (update_gen_kill_set): Fix previous patch.
15683
15684 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15685
15686         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
15687
15688 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
15689
15690         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
15691         ldsfld and ldsflda.
15692
15693         * inssel-sparc.brg: Add more optimizations.
15694
15695         * mini-sparc.c: Replace multiply/divide with shifts if possible.
15696
15697 2004-04-01  Martin Baulig  <martin@ximian.com>
15698
15699         * mini.c (handle_box): New static function; moved the
15700         implementation of CEE_BOX here.
15701         (mono_method_to_ir): Added `constrained_call' variable.
15702         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
15703         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
15704         mono_method_get_constrained() to get the method.
15705
15706 2004-04-01  Martin Baulig  <martin@ximian.com>
15707
15708         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
15709         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
15710         (mono_method_to_ir): We don't need these macros anymore since
15711         mono_class_get_full() already takes care of it. 
15712
15713 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15714
15715         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
15716         use @function (as doesn't accept #function here) and check the return
15717         value of system and stop if fails.
15718
15719 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15720
15721         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
15722
15723 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
15724
15725         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
15726
15727         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
15728
15729         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
15730         #56223.
15731
15732         * basic-long.cs: Add test for negation of Int64.MinValue.
15733
15734 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
15735
15736         * mini-sparc.c: Update status.
15737
15738         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
15739
15740         * exceptions-sparc.c: Fix return value in filters.
15741
15742         * inssel-sparc.brg: Fix register allocation in some rules.
15743
15744 2004-03-28  Martin Baulig  <martin@ximian.com>
15745
15746         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
15747         if neccessary.  
15748
15749 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
15750
15751         * mini-x86.c (mono_arch_patch_code): Fix warnings.
15752         
15753         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
15754         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
15755         remove unused conv_u4 opcode.
15756
15757         * mini-x86.c: Remove valgrind workaround since it slows down things
15758         even when mono is not run under valgrind.
15759
15760 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
15761
15762         * mini-sparc.c: Update status.
15763
15764         * inssel-sparc.brg: Add some optimizations.
15765
15766         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
15767         future delay slot filling. Add support for varargs, tail calls and JMP.
15768
15769         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
15770         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
15771
15772         * inssel.brg: Fix register allocation in OP_ARGLIST.
15773
15774         * inssel.brg: Fix warnings.
15775
15776 2004-03-25  Martin Baulig  <martin@ximian.com>
15777
15778         * mini.c (inflate_generic_field): Removed.
15779         (mini_get_method): Removed, use mono_get_method_full(),
15780         (mini_get_class): Removed, use mono_class_get_full().
15781         (mono_method_to_ir): Pass our generic context to
15782         mono_field_from_token().        
15783
15784 2004-03-25  Martin Baulig  <martin@ximian.com>
15785
15786         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
15787         of a `MonoMethod *'.
15788         (mini_get_method): Take a `MonoGenericContext *' instead
15789         of a `MonoMethod *'.
15790         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
15791         a new local variable called `generic_context' which holds the
15792         current `MonoGenericContext *'; use it to lookup things.
15793
15794 2004-03-24  Martin Baulig  <martin@ximian.com>
15795
15796         * mini.c (mini_get_class): New static method; if we're inside a
15797         generic instance, inflate the class if neccessary.
15798         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
15799
15800 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
15801
15802         * iltests.il: New regression test for #55976.
15803
15804         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
15805         #55976.
15806
15807 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15808
15809         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
15810         output.
15811
15812 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15813
15814         * liveness.c: Consider SSA stores as well as loads when making vars
15815         volatile.
15816
15817         * exceptions.cs: New regression tests for register allocation.
15818         
15819 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
15820
15821         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
15822         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
15823           domain lock only to protect puntual access to data structures.
15824           Added access lock for sighash, jit_icall_hash_name, 
15825           jit_icall_hash_addr and domain->code_mp.
15826
15827 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
15828
15829         * driver.c: Print SIGSEGV handling method.
15830
15831         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
15832
15833         * mini.c (setup_jit_tls_data): Handle case when this is called
15834         multiple times for a thread.
15835
15836         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
15837         is different from fbxx_un. Fixes #54303. Also use constants instead of
15838         magic numbers in a lot of places.
15839
15840 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
15841
15842         * exceptions.cs: Fix cctor test when --regression is used.
15843
15844 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
15845
15846         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
15847         for Linux/ppc.
15848
15849 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
15850
15851         * inssel-ppc.brg: fixed register assignments for some rules.
15852
15853 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15854
15855         * exceptions.cs: Add test for exceptions in static constructors.
15856
15857         * mini.c (mono_jit_compile_method_with_out): Move the calling of
15858         static constructors outside the domain lock. Fixes #55720.
15859
15860 2004-03-17  Martin Baulig  <martin@ximian.com>
15861
15862         * mini.c (get_generic_field_inst): Removed, this'll never happen.
15863         (inflate_generic_field): Take the `MonoMethod *' instead of the
15864         `MonoClass *' and added support for generic method.
15865         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
15866         have a `field->parent->gen_params', only inflate the field if it's
15867         an open constructed type.
15868
15869 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15870
15871         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
15872         exception object instead of the preconstructed ones.
15873
15874 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15875
15876         * mini.c: reverted changed to sigsegv_signal_handler commited
15877         accidentally in the previous patch.
15878
15879 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15880
15881         * mini.c:
15882         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
15883         running --aot with an old assembly.
15884
15885 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
15886
15887         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
15888         point values.
15889
15890         * mini-sparc.c: Add support for v9 branches with prediction.
15891
15892 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
15893
15894         * mini.c (mini_init): #warning is GNUC only
15895
15896         * mini-sparc.h: implement __builtin_frame_address
15897         and __builtin_return_address for Sun C compiler
15898
15899 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
15900
15901         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
15902
15903 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
15904
15905         * basic-calls.cs: Add test for unaligned byref long argument passing.
15906
15907         * mini-ops.h: Add sparcv9 compare and branch instructions.
15908
15909         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
15910         v9 instructions if we have a v9 cpu.
15911
15912         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
15913         registers for global allocation.
15914
15915         * exceptions-sparc.c: Fixes.
15916         
15917 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
15918
15919         * liveness.c (mono_analyze_liveness): Optimized version.
15920
15921         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
15922
15923         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
15924         sparc work.
15925
15926         * basic-float.cs basic-calls.cs: New regression tests.
15927
15928 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
15929
15930         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
15931         sigaltstack implementation.
15932
15933         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
15934         
15935         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
15936         stuff if SIGSEGV_ON_ALTSTACK is not defined.
15937
15938 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
15939
15940         * mini.c: Fix warnings.
15941         
15942         * mini.c (mono_resolve_patch_target): New function which contains the
15943         arch independent part of the patching process.
15944
15945         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
15946         patching code to a separate function.
15947
15948 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
15949
15950         * mini.c (add_signal_handler): ifdef out on Windows
15951
15952 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
15953
15954         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
15955         cpu-sparc.md: Add exception handling support + other fixes.
15956
15957         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
15958         typed GC detection in --version.
15959
15960         * basic.cs exceptions.cs: New regression tests.
15961
15962         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
15963         the arch specific code can store data during a compilation.
15964
15965         * mini-ops.h: Add OP_SETFRET.
15966
15967         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
15968         function, register a separate icall for each arity, so the icalls can
15969         get a wrapper.
15970         
15971         * mini.c (mono_print_tree): Print negative offsets in a more readable
15972         form.
15973         
15974         * mini.c: Make signal handling work on sparc.
15975         
15976         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
15977
15978         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
15979
15980         * jit-icalls.c: Emulate truncl by aintl on solaris.
15981
15982         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
15983
15984 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
15985
15986         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
15987
15988 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
15989
15990         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
15991         a MarshalByRef type, inline a method that performs the check, taking into
15992         account that the object can be a proxy. Also implemented tow new opcodes:
15993         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
15994         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
15995         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
15996
15997 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
15998
15999         * mini-ppc.c: if a relative branch displacement is too big
16000         but it points to and area reachable with an absolute branch, 
16001         avoid the thunks.
16002
16003 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
16004
16005         * mini.c: optimize small copies in cpblk.
16006
16007 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
16008
16009         * basic-calls.cs basic-float.cs: New regression tests.
16010
16011         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
16012         negative offsets from %fp. Implement localloc. Fix local register 
16013         allocation. Fix the case when the this argument needs to be saved to
16014         the stack. Implement some missing opcodes.
16015
16016 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
16017
16018         * mini.c (mini_method_compile): Reenable global regalloc in methods
16019         with exception handlers.
16020
16021         * linear-scan.c (mono_varlist_sort): Fix warning.
16022
16023         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
16024
16025         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
16026         regalloc costs.
16027
16028         * liveness.c: Make all variables uses in exception clauses volatile, to
16029         prevent them from being allocated to registers. Fixes #42136.
16030
16031 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
16032
16033         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
16034         causes regressions.
16035
16036         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
16037         argument to mono_arch_regalloc_cost.
16038
16039         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
16040         precisely.
16041
16042 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
16043
16044         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
16045         Make the cost of allocating a variable to a register arch dependent.
16046
16047         * basic-calls.cs: Fix compilation of tests.
16048         
16049         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
16050         helper function to cut back on the number of #ifdefs needed.
16051
16052         * mini-ppc.c: Fix compilation.
16053
16054         * basic-calls.cs: New regression tests.
16055
16056         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
16057
16058         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
16059         of l0 since that is callee saved.
16060
16061         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
16062         to virtual calls.
16063
16064         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
16065         of delay instruction.
16066
16067         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
16068
16069         * mini.h (MonoCallInst): Add 'virtual' flag.
16070
16071         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
16072
16073 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
16074
16075         * *.cs: New regression tests.
16076
16077         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
16078         work.
16079
16080         * mini.c (mono_runtime_install_handlers): Fix build.
16081
16082         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
16083         'signal_stack_size' members.
16084
16085         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
16086         alternate signal stack.
16087
16088         * exceptions-x86.c: Add stack overflow handling.
16089
16090         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
16091         functions to arch independent code.
16092
16093         * mini.c (mono_print_tree): Print more detailed info for load_membase
16094         opcodes.
16095         
16096 2004-02-23  Martin Baulig  <martin@ximian.com>
16097
16098         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
16099
16100 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
16101
16102         * mini-x86.c: fixed reg allocation for div/rem.
16103
16104 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
16105
16106         * driver.c (mono_main): Report some configuratio options on --version.
16107
16108 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
16109
16110         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
16111         low in the address space. Correctly flush memory in thunks where we
16112         output native code.
16113
16114 2004-02-20  Martin Baulig  <martin@ximian.com>
16115
16116         * mini.c (mini_get_method): New static method; inflate all generic
16117         methods and methods in open generic instances.
16118         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
16119         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
16120
16121 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
16122
16123         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
16124
16125         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
16126
16127 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
16128
16129         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
16130
16131         * mini-sparc.c (flushi mono_arch_output_basic_block): make
16132         it compile using Sun's compiler.
16133
16134 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
16135
16136         * 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.
16137
16138         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
16139
16140 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16141
16142         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
16143         code.
16144         * mini-ppc.c: handle calls outside of the allowed range with thunks
16145         allocated using the code manager.
16146         * tramp-ppc.c: use the code manager to hold generated native code.
16147         Fixed the magic trampoline to just patch vtable entries.
16148
16149 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
16150
16151         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
16152         independent file.
16153
16154 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
16155
16156         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
16157         PPC.
16158
16159         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
16160         if we have a working __thread implementation.
16161
16162         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
16163         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
16164
16165 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
16166
16167         * mini-x86.c: Fix compilation under gcc 2.
16168         
16169 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
16170
16171         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
16172         contains a call to the wrapped function.
16173
16174         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
16175         OP_<CALL>_IMM opcodes, and use them under X86.
16176         
16177         * mini.c (mono_jit_find_compiled_method): Fix warning.
16178
16179         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
16180
16181         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
16182
16183         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
16184         functionality to mini.c.
16185
16186         * mini.c (mono_create_jump_trampoline): New function to create a jump
16187         trampoline. Return a compiled method instead of a trampoline if it
16188         exists. Add a cache for jump trampolines.
16189
16190         * mini.c (mono_jit_find_compiled_method): New function to return a
16191         compiled method if it exists.
16192
16193         * mini-x86.c: Call mono_create_jump_trampoline instead of 
16194         mono_arch_create_jit_trampoline.
16195
16196         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
16197         a jump trampoline. Fixes #52092.
16198         
16199 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
16200
16201         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
16202         which is not up-to-date. Add check_corlib_version () instead.
16203
16204         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
16205         have to call it.
16206         
16207         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
16208         since newer valgrind versions do not need it.
16209
16210         * mini.c (mono_jit_compile_method_with_opt): New helper function to
16211         compile a method with a given set of optimizations.
16212
16213         * mini.c: Compile icall wrappers on-demand instead of at startup.
16214
16215         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
16216         wrapper for an icall.
16217
16218 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
16219
16220         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
16221         #54063.
16222
16223         * iltests.il: Add test for non-empty stack before switch instruction.
16224
16225 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
16226
16227         * mini.c: Add support for new stringbuilder marshalling conventions.
16228
16229         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
16230
16231 2004-02-01  Martin Baulig  <martin@ximian.com>
16232
16233         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
16234         in `ginst->mtype_argv'.
16235
16236 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
16237
16238         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
16239         facilitate grepping.
16240
16241 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
16242
16243         * mini.c: fixed buglet in initobj generic implementation for references.
16244
16245 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
16246
16247         * Makefile.am: make the version script conditional.
16248         * jit-icalls.c: handle missing truncl().
16249
16250 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
16251
16252         * exceptions.cs: Add more tests for double->int conversion.
16253
16254         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
16255         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
16256
16257 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
16258
16259         * driver.c: make --verbose --version emit an error
16260         if the loaded corlib doesn't match the runtime version.
16261
16262 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
16263
16264         * mini-ppc.h: export ppc_patch().
16265         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
16266         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
16267         on par or better than on MacOSX.
16268
16269 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
16270
16271         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
16272         mono_lookup_pinvoke_call.
16273
16274         * mini-x86.c: Under windows, the default pinvoke calling convention is
16275         stdcall. Fixes #52834.
16276
16277         * mini.c (optimize_branches): Add an upper bound to the number of
16278         iterations to prevent infinite loops on strange loops. Fixes #53003.
16279
16280 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
16281
16282         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
16283         and ISINST. Fixes #52093.
16284
16285         * objects.cs (test_0_vector_array_cast): New tests.
16286         
16287 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
16288
16289         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
16290         checking in Array.Set ().
16291
16292         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
16293         #52590.
16294
16295         * object.cs (test_0_multi_array_cast): New regression test.
16296
16297 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
16298
16299         * exceptions-ppc.c: fix build on Linux/PPC.
16300
16301 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
16302
16303         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
16304         running under valgrind.
16305         (x86_magic_trampoline): Fix build bustage.
16306
16307         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
16308         negative values as well. This is needed for the encoding of the line number
16309         info, since sometimes the line numbers are not in increasing order.
16310
16311 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
16312
16313         * cpu-pentium.md (localloc): Increase the size of the localloc 
16314         instruction since it is a loop under Win32.
16315
16316         * debug-mini.c (record_line_number): Get rid of unneccesary memory
16317         allocation.
16318
16319 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
16320
16321         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
16322         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
16323         Max Horn (max@quendi.de). Fix file names in comments.
16324
16325 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
16326
16327         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
16328         avoid stack overflow.
16329         (replace_usage): Avoid uninitialized variable warnings.
16330
16331         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
16332         and taking the address of valuetype variables.
16333
16334 2004-01-03  Patrik Torstensson
16335
16336         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
16337         for other purposes than FP later on.
16338
16339 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
16340
16341         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
16342         of tail calls.
16343
16344 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16345
16346         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
16347
16348 2003-12-30  Patrik Torstensson <p@rxc.se>
16349
16350         * mini-x86.h: Decreased number of availiable fp regs.
16351         Solves corner cases with FP spilling.
16352
16353 2003-12-23  Patrik Torstensson <p@rxc.se>
16354
16355         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
16356         for floating point stack tracking / spilling on x86. 
16357         Fixes bug #49012.
16358         
16359         * basic-float.cs: added float mul overflow test.
16360
16361 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
16362
16363         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
16364
16365 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16366
16367         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
16368         supports for cond branches that overflow the immediate
16369         overflow offset. mcs can compile simple programs.
16370
16371 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16372
16373         * exceptions-ppc.c: exception handling support wip:
16374         finally handlers get run on exception.
16375
16376 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
16377
16378         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
16379         profiling.
16380
16381 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16382
16383         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
16384         initial support for stack walking and unwinding.
16385
16386 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
16387
16388         * driver.c (mono_main): Make corlib-out-of-sync message more 
16389         descriptive. Also remove verify_corlib call.
16390
16391 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16392
16393         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
16394         not overlap with other call's arguments, too.
16395
16396 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
16397
16398         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
16399         move to arch-specific code the choice of arch-specific
16400         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
16401         * mini.c: ensure emulation calls will not interleave
16402         with other calls.
16403
16404 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
16405
16406         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
16407         the magic trampoline stack frame is dropped before executing
16408         the new method.
16409
16410 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
16411
16412         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
16413         and integer to fp conversions. Added support for overflowing
16414         arguments on the stack. Reserve a couple more registers as temps.
16415         Added support for aot compilation (as output still needs to be
16416         tweaked, though).
16417
16418 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16419
16420         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
16421         Don't overwrite return register in some corner cases.
16422
16423 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
16424
16425         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
16426         static constructors when AOT compiling.
16427
16428         * driver.c (mono_main): Call mono_check_corlib_version.
16429
16430 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16431
16432         * cpu-g4.md, basic.cs: fixed div target register.
16433
16434 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
16435
16436         * mini-ppc.c, basic.cs: shl_imm fix with test.
16437
16438 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16439
16440         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
16441         structures by value. Misc fixes.
16442         * objects.cs: more tests.
16443
16444 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
16445
16446         * mini-ppc.c: lconv.ovf.i implemented.
16447
16448 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16449
16450         * mini.c:
16451         (mini_init): don't error out if someone already called g_thread_init.
16452
16453 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16454
16455         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
16456         to be any type per the spec. Fix abnormal memory usage when
16457         the same object is repeatedly thrown.
16458
16459 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
16460
16461         * mini.c: check for overruns in IL code.
16462
16463 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
16464
16465         * TODO: Add/remove some todo entries.
16466
16467 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
16468
16469         * driver.c (mono_main): Call mono_verify_corlib.
16470
16471 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
16472
16473         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
16474         This has been moved to mini.c
16475         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
16476         type being casted is marshalbyref it could be a proxy, so instead of
16477         emitting the type check code, emit a call to a runtime method that will
16478         perform the check by calling CanCastTo if needed.
16479
16480 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
16481
16482         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
16483         methods with large stack frames under Win32.
16484
16485 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
16486
16487         * Makefile.am: Distribute regression tests.
16488
16489         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
16490         at the end instead of inserting each variable into the sorted list.
16491
16492         * linear-scan.c (mono_varlist_sort): New helper function.
16493         
16494 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16495
16496         * mini.c: ensure arguments and locals are within bounds.
16497
16498 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16499
16500         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
16501         related fixes.
16502
16503 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16504
16505         * mini.c (mono_cprop_copy_values): Fix crash.
16506
16507         * aot.c: Set verbosity back to 0.
16508         
16509 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16510
16511         * regalloc.c: complete memory leak fix by Laurent Morichetti
16512         (l_m@pacbell.net).
16513
16514 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16515
16516         * driver.c (main_thread_handler): Revert the previous patch.
16517
16518         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
16519         under valgrind.
16520
16521         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
16522         memory from the memory pool.
16523
16524         * driver.c (main_thread_handler): Turn on all optimizations when
16525         --aot is used.
16526
16527         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
16528         an array for better performance.
16529
16530         * regalloc.c (mono_regstate_assign): Fix memory leak.
16531
16532         * debug-mini.c (mono_debug_serialize_debug_info): New function to
16533         serialize the debug info.
16534
16535         * debug-mini.c (mono_debug_add_aot_method): New function to load the
16536         debug info from the serialized representation.
16537
16538         * aot.c: Save debug info into the generated file and load it when 
16539         loading a method.
16540
16541         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
16542
16543 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16544
16545         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
16546         More FP-related fixes.
16547
16548 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
16549
16550         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
16551         and register allocation buglet. Hello world now runs.
16552
16553 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16554
16555         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
16556         * tramp-ppc.c: fixed class init trampoline.
16557         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
16558
16559 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16560
16561         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
16562         mini.c: more ppc changes/fixes.
16563
16564 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16565
16566         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
16567         Also optimize the case when the arguments are the same in the caller 
16568         and in the callee.
16569
16570         * iltests.il: Add tests for tail calls with valuetype arguments.
16571
16572 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16573
16574         * mini-ppc.c: fixes for struct return type.
16575
16576 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
16577
16578         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
16579         mono_spillvar_offset() to arch-specific code.
16580
16581 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
16582
16583         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
16584
16585 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16586
16587         * exceptions-x86.c: Fix stack space leaks.
16588         
16589         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
16590         registers from the lmf if the method has save_lmf set.
16591
16592 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
16593
16594         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
16595         of icall wrappers into InvokeInDomain, since these are now per-domain.
16596
16597 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
16598
16599         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
16600         make some opcode emulation and intrinsic ops enabled/disabled 
16601         according to the architecture. More fixes.
16602
16603 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
16604
16605         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
16606
16607 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16608
16609         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
16610         arch-specific handling for 'this' and struct return type to
16611         arch-specific code.
16612
16613 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16614
16615         * aot.c: prevent divide by zero error when reporting (it happened with
16616         Accessibility.dll).
16617
16618 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
16619
16620         * mini.h (inst_switch): Remove unused macro.
16621
16622 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16623
16624         * aot.c:
16625         (load_aot_module): free 'info->methods' and 'info' properly. No more
16626         "free(): invalid pointer blah" messages when you have an old aot
16627         compiled assembly.
16628
16629 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
16630
16631         * jit-icalls.c, mini.c: Added support for context static fields.
16632
16633 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16634
16635         * mini.c (mono_method_blittable): Methods which set LastError are not 
16636         blittable either. Fixes #51108.
16637         
16638 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16639
16640         * mini.c: flush icache.
16641         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
16642
16643 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16644
16645         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
16646
16647 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
16648
16649         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
16650         safe on IA32.
16651
16652         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
16653         vararg calls.
16654
16655         * inssel.brg (CEE_MKREFANY): Fix AOT case.
16656
16657 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
16658
16659         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
16660         instruction when the result is discarded.
16661
16662         * iltests.il (test_0_div_regalloc): New regression test.
16663
16664         * arrays.cs: Fix compilation error.
16665
16666 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
16667
16668         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
16669         float rules to inssel-x86.brg: sane architectures with FP registers
16670         don't need to implement these rules.
16671
16672 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16673
16674         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
16675
16676 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16677
16678         * mini.h, inssel-long32.brg: fixed endianess issues in int64
16679         implementation of 32 bit systems.
16680
16681 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16682
16683         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
16684         (Jeroen Zwartepoorte).
16685
16686 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
16687
16688         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
16689         the caller and the callee matches.
16690         
16691         * mini.c (mono_method_to_ir): Add comment.
16692
16693         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
16694         signbit is missing on some platforms.
16695
16696 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
16697
16698         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
16699
16700         * mini.c (setup_jit_tls_data): Call the new function.
16701         
16702         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
16703
16704         * mini-x86.c: Add experimental support for fast access to the lmf
16705         structure under NPTL/Linux 2.6.x.
16706
16707 2003-11-06  Martin Baulig  <martin@ximian.com>
16708
16709         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
16710         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
16711         the debugger.
16712
16713 2003-11-02  Martin Baulig  <martin@ximian.com>
16714
16715         * mini.c (inflate_generic_field): New static method.
16716         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
16717         generic instance and the field is declared in a generic type, call
16718         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
16719
16720 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
16721
16722         * mini.h mini.c (mono_method_same_domain): New function to return
16723         whenever the caller and the callee are in the same domain.
16724
16725         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
16726
16727 2003-10-30  Martin Baulig  <martin@ximian.com>
16728
16729         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
16730         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
16731         method parameters.
16732         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
16733         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
16734
16735 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
16736
16737         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
16738         propagation.
16739
16740         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
16741         object here, so it is in the correct appdomain etc.
16742
16743 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
16744
16745         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
16746         already done.
16747         (mono_method_to_ir): Avoid freeing the type created returned from
16748         mono_type_create_from_typespec, since it is put into an internal cache
16749         by the function. Fixes pointer.exe.
16750
16751         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
16752         trampolines for icalls and pinvokes as well. Fixes #33569.
16753
16754 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
16755
16756         * mini.c: Update after appdomain changes.
16757
16758         * mini.c (mono_jit_compile_method_inner): Allways compile native
16759         method wrappers in the root domain, since there can only be one
16760         instance of them, whose address is stored in method->info.
16761
16762 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
16763
16764         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
16765         environment variable. Instead detect automatically whenever running
16766         under valgrind using the magic macro RUNNING_ON_VALGRIND from
16767         valgrind.h.
16768
16769 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
16770
16771         * trace.c, trace.h: New files that implement the new trace option
16772         parsing. 
16773
16774         * driver.c: Document new --trace options.
16775
16776         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
16777         mini-x86.c: Apply:
16778
16779         -       if (mono_jit_trace_calls)
16780         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
16781
16782         * mini.h: prototypes.
16783         
16784 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
16785
16786         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
16787
16788         * mini.c inssel.brg: Implement typedefbyref opcodes.
16789
16790         * mini.c (mono_jit_compile_method): Remove unused local variable.
16791
16792         * mini.c (mono_jit_compile_method_inner): Ditto.
16793         
16794 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
16795
16796         * tramp-x86.c (x86_class_init_trampoline): Fix build.
16797         
16798         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
16799
16800 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
16801
16802         * mini.c (mono_no_aot): Remove unused global variable.
16803
16804         * mini.c: Thread safety fixes.
16805
16806 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
16807
16808         * mini.c (mono_create_class_init_trampoline): Add a lock around
16809         class_init_hash_addr.
16810
16811         * arrays.cs (test_0_newarr_emulation): Add new regression test for
16812         #30073.
16813
16814         * mini.c: Decompose the NEWARR instruction before decomposing its
16815         arguments. Fixes #30073.
16816
16817 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
16818
16819         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
16820         convention.
16821
16822 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
16823
16824         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
16825
16826         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
16827
16828         * driver.c: Add support for compiling icall wrappers to --compile.
16829
16830 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
16831
16832         * inssel.brg: The empty value in class->interface_offsets is -1, not
16833         0. Fixes #49287.
16834
16835 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
16836
16837         * objects.cs: New test for 'is' operator on an array of interfaces.
16838
16839 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
16840
16841         * tramp-ppc.c: update trampoline code to support jumps
16842         and class initialization.
16843
16844 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
16845
16846         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
16847
16848         * inssel.brg (OP_UNBOXCAST): Fix #46027.
16849
16850         * inssel.brg (OP_UNBOX): Remove unused rule.
16851
16852         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
16853         region instead of one for each method. Fixes #47813.
16854
16855 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
16856
16857         * exceptions.cs (test_0_nested_finally): New regression test for
16858         nested exception handlers.
16859
16860         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
16861
16862         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
16863
16864         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
16865         inlining.
16866
16867         * mini.c (mono_method_check_inlining): Make the inlining limit 
16868         configurable by an environment variable.
16869         
16870         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
16871
16872         * mini.h: Bump AOT file version.
16873
16874         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
16875         token, store the image along with the token, since the token might not 
16876         refer to the same image as the method containing the relocation, 
16877         because of inlining.
16878
16879 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
16880
16881         * mini.c (mono_precompile_assemblies): New function to compile
16882         all methods in all loaded assemblies.
16883
16884         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
16885
16886         * regalloc.h regalloc.c (MonoRegState): Change the type of 
16887         iassign and fassign to int*, since they can contain large negative
16888         values if the register is spilled. Also added some comments. Fixes
16889         #45817.
16890
16891         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
16892         under Win32. Fixes #42964.
16893
16894 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
16895
16896         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
16897
16898         * aot.c: Added support for AOT compiling methods which contain calls
16899         to wrappers. Currently, only remoting-invoke-with-check wrappers are
16900         handled.
16901         
16902         * driver.c (compile_all_methods): Run the compilation in a thread
16903         managed by mono. Fixes #44023.
16904
16905         * mini.c (mono_codegen): Print full method name in verbose output.
16906
16907         * mini-x86.c (mono_arch_patch_code): Fix warning.
16908         
16909         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
16910         jumps, since the method we are jumping to might be domain-specific.
16911
16912         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
16913
16914 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
16915
16916         * inssel.brg: string chars are unsigned.
16917
16918 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
16919
16920         * TODO: New todo item.
16921
16922         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
16923         which calls mono_runtime_class_init and patches the call site to
16924         avoid further calls.
16925         (mono_arch_create_class_init_trampoline): New arch specific function 
16926         to create a class init trampoline.
16927         (create_trampoline_code): Generalized so it can create
16928         class init trampolines as well.
16929
16930         * mini.c (helper_sig_class_init_trampoline): New helper variable.
16931         (mono_create_class_init_trampoline): New function to create and cache
16932         class init trampolines.
16933         (mono_find_class_init_trampoline_by_addr): New function to lookup the
16934         vtable given the address of a class init trampoline. Used by the
16935         patching process.
16936         (mono_codegen): Generate a call to a trampoline instead of
16937         mono_runtime_class_init in LDSFLD[A].
16938         (mono_codegen): Add relocations for the new trampoline.
16939         
16940         * mini.h mini-x86.c aot.c: Added a new relocation type: 
16941         MONO_PATCH_INFO_CLASS_INIT.
16942
16943         * mini.h: Bump AOT version number.
16944
16945         * aot.c: Create a copy of the loaded code instead of using the original
16946         so methods which call each other will be close in memory, improving
16947         cache behaviour.
16948         
16949         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
16950         patch since it breaks the regression tests.
16951         
16952         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
16953         for the register saving instruction sequence since the 
16954         frame_state_for function in glibc 2.3.2 don't seem to detect it.
16955
16956 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
16957
16958         * TODO: Fix todo item && remove another.
16959
16960 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
16961
16962         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
16963         previous checkin.
16964
16965         * aot.c: Moved the check for MONO_LASTAOT into the initialization
16966         function of the module.
16967
16968         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
16969         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
16970         --no-aot command line option.
16971
16972 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
16973
16974         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
16975         by Bernie Solomon (bernard@ugsolutions.com).
16976
16977         * inssel.brg: Refactor the interface offset table related code into
16978         its separate functions and add support for the AOT case.
16979
16980 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
16981
16982         * aot.c (mono_aot_get_method_inner): Fix memory leak.
16983         
16984         * aot.c: Added mono_aot_verbose variable and made all debugging
16985         output depend on the value of this variable.
16986
16987         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
16988         method_label and info_label.
16989
16990         * mini.h mini-x86.c aot.c: Added a new relocation type 
16991         MONO_PATCH_INFO_IID for klass->interface_id.
16992
16993         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
16994         the MonoJitInfo structure.
16995
16996         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
16997         a non-root appdomain in shared mode.
16998
16999 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17000
17001         * aot.c: make aot loader less verbose. Remove free of unused variable.
17002
17003 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
17004
17005         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
17006
17007         * .cvsignore: Added *.dll.
17008
17009         * mini.c (mono_print_tree_nl): New function callable while debugging.
17010
17011         * mini.c (mono_print_code): Export this.
17012
17013         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
17014         patched code.
17015
17016 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
17017
17018         * mini.h (MonoCompile): Added 'jit_info' field.
17019
17020         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
17021         the cfg structure, since it is needed by the AOT compiler.
17022
17023         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
17024
17025         * aot.c: A major rewrite. Changes include:
17026         - save exception tables for methods which have them.
17027         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
17028         to g_module_symbol.
17029         - reworked the file format so it is now much smaller and needs
17030         fewer relocation entries.
17031         
17032 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
17033
17034         * aot.c (load_aot_module): Fix build bustage on platforms without
17035         Boehm GC.
17036
17037 2003-09-04  Martin Baulig  <martin@ximian.com>
17038
17039         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
17040
17041 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
17042
17043         * TODO: Some new optimization ideas.
17044
17045         * aot.c: Move AOT module loading logic here from mono_assembly_open.
17046
17047         * aot.c: Save the optimization flags used to compile the code into
17048         the AOT module.
17049
17050         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
17051         support emitting domain specific code.
17052         
17053         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
17054         no longer domain neutral. It can be made domain neutral by compiling 
17055         with --optimize=shared.
17056
17057         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
17058         between appdomains.
17059
17060         * driver.c mini.h mini.c: New --no-aot debugging option which disables
17061         loading of AOT code.
17062
17063         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
17064         
17065         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
17066         if there is no domain neutrality information.
17067
17068 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
17069
17070         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
17071         format version into the generated library.
17072
17073         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
17074         callee method into the caller since one of them could be shared.
17075
17076         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
17077         system exceptions from AOT code now works.
17078
17079         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
17080         method if it is domain neutral and the callee is not.
17081
17082         * graph.c (cfg_emit_one_loop_level): Fix warning.
17083
17084 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
17085
17086         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
17087         last checkin.
17088
17089 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
17090
17091         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
17092         is needed  by code which is executed before mono_runtime_init ().
17093         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
17094         
17095         * mini.c (mono_thread_abort): Fix warning.
17096         (mono_jit_compile_method): Call static constructor in the AOT case too.
17097
17098         * aot.c (mono_compile_assembly): Fix warning.
17099
17100 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17101
17102         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
17103
17104 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
17105
17106         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
17107
17108         * cpu-pentium.md: Fix the length of call opcodes so they include the
17109         ESP restoring instruction. Fixes #47968.
17110
17111 2003-08-28  Martin Baulig  <martin@ximian.com>
17112
17113         * mini-x86.c (mono_arch_call_opcode): Added support for
17114         MONO_TYPE_GENERICINST.
17115
17116         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
17117
17118 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
17119
17120         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
17121         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
17122
17123         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
17124         metadata_section.
17125
17126 2003-08-26  Martin Baulig  <martin@ximian.com>
17127
17128         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
17129         when reporting an error, set this to the actual error location.
17130         (mono_method_to_ir): Report the correct error location if
17131         get_basic_blocks() returned an error.
17132
17133 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
17134
17135         * mini.c (mono_type_blittable): OBJECT is not blittable.
17136         (mono_method_blittable): Methods which have marshalling descriptors
17137         are not blittable either. Fixes #47842.
17138
17139 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
17140
17141         * driver.c mini.c: Use an environment variable instead of a global 
17142         variable. Also fix the build.
17143
17144         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
17145         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
17146         reporting this. 
17147
17148         * driver.c mini.c: Added --with-valgrind option to turn off some
17149         code which prevents mono from running under valgrind.
17150
17151         * mini.c (mono_emit_call_args): Fixed warning.
17152
17153         * mini.c (mono_emulate_opcode): Fixed warning.
17154
17155 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17156
17157         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
17158         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
17159         regalloc.c, regalloc.h: specify available registers in arch-specific
17160         code and support floats in the regallocator (patch by Laurent Morichetti 
17161         <l_m@pacbell.net>)
17162
17163 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17164
17165         * mini.c: mono_thread_current() can be called only after
17166         mono_runtime_init(): rearrange code to not call it early on.
17167
17168 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17169
17170         * mini.c: allocate jump tables in the code mempools.
17171
17172 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17173
17174         * mini.c, mini.h: make sure per-thread data allocated by the jit is
17175         freed.
17176
17177 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
17178
17179         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
17180         12 to 16.  This fixes bug #47453.
17181
17182
17183 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
17184
17185         * mini-ppc.c: fixed indexed load and unsigned compares.
17186
17187 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
17188
17189         * mini.c: reenabled installation of handler for
17190           thread abort signal.
17191
17192 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17193
17194         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
17195         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
17196         until it's fixed and actually useful.
17197
17198 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17199
17200         * inssel-long32.brg: couple more opcodes implemented.
17201
17202 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
17203         
17204         * mini-sparc.c: Even more opcodes implemeted.
17205
17206 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
17207
17208         * mini-sparc.c: More opcodes implemented.
17209
17210 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
17211
17212         * mini-sparc.c: More opcodes implemented.
17213
17214 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
17215
17216         * inssel-sparc.brg: Add some needed rules.  Direct
17217         copy from PPC.
17218         * Makefile.am: Use inssel-sparc.brg
17219         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
17220         an assert happy for now.
17221
17222 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
17223
17224         * mini-sparc.c: Fixed compile errors.
17225         * exceptions-sparc.c: Same.  We now produce a mono binary 
17226         on sparc-linux.  Yea.
17227
17228 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
17229
17230         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
17231         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
17232         They compile, but do not work.
17233
17234 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17235
17236         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
17237         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
17238         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
17239         (ct@gentoo.org).
17240
17241 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17242
17243         * mini.c: more opcodes implemented and better support for generics.
17244
17245 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17246
17247         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
17248         * mini.c, mini.h: first cut at generics support: some new instructions 
17249         added and changed the behaviour of some of the existing ones.
17250
17251 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
17252
17253         * mini.c: Removed definition of metadata_shared mutex here.
17254
17255 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17256
17257         * mini-x86.c: make vararg calls work for instance methods.
17258
17259 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
17260
17261         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
17262         returns the arguments in a separte list, now.
17263
17264 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17265
17266         * aot.c, mini.c: updates for array type representation changes.
17267
17268 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
17269
17270         * mini.c: register function to perform jit shutdown.
17271
17272 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17273
17274         * mini.c: use a faster allocator if possible.
17275
17276 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17277
17278         * aot.c: some cleanups and portability changes.
17279
17280 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17281
17282         * mini.c: use faster allocation for CEE_BOX if possible.
17283
17284 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17285
17286         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
17287         Moved inlined mempcy code to its own function so that is can be
17288         reused. Added an inline memset function as well (optimized initobj).
17289         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
17290
17291 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17292
17293         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
17294
17295 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
17296
17297         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
17298         arch code can setup the cpu for CLR execution, if needed.
17299         We use it on x86 to set the precision of FP operations.
17300
17301 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
17302
17303         * mini.c: disable some optimizations if we can guess they'll cost too
17304         much for a given method.
17305
17306 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17307
17308         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
17309         
17310 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17311         * mini.h mini.c mini-x86.c: Added instruction level coverage 
17312         info collection support.
17313
17314 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17315
17316         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
17317         is now implemented in the profiling API. Get rid of a couple of
17318         unnecessary global variables.
17319
17320 2003-06-15  Nick Drochak <ndrochak@gol.com>
17321
17322         * basic-long.cs: tests for negative values for bigmul, and unsigned.
17323         * cpu-g4.md: add op_bigmul and op_bigmul_un
17324         * cpu_pentium.md: add op_bigmul_un
17325         * inssel-long32.brg: add rule for unsigned bigmul
17326         * mini-ops.h: define OP_BIGMUL_UN
17327         * mini-x86.c: THE BUG: handle (un)signed properly
17328         * mini.c: choose unsigned opcode if needed.
17329         This set of patches fixes bug #44291
17330
17331 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
17332
17333         * mini.c (optimize_branches): improved to handle all kinds of
17334         conditional branches.
17335
17336 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17337
17338         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
17339         don't raise exceptions.
17340
17341 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17342
17343         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
17344         to arch-specific files.
17345
17346 2003-06-09  Martin Baulig  <martin@ximian.com>
17347
17348         * Makefile.am (libs): Added $(LIBGC_LIBS).
17349
17350 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
17351
17352         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
17353         and OP_ATAN (fixes bug#44293).
17354
17355 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
17356
17357         * Makefile.am, mini-x86.c: rename cpu description array to
17358         pentium_desc, since some compilers define the 'pentium' preprocessor
17359         symbol.
17360
17361 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
17362
17363         * mini.c (mini_select_instructions): add explicit branch if the
17364         following block is not the false target of a conditional branch -
17365         we need this with any optimization that reorder or remove bblocks
17366
17367         * mini.c (optimize_branches): bug fixes
17368
17369 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
17370
17371         * mini.c (mono_method_to_ir): inline static readonly fields
17372
17373         * ssa.c (fold_tree): start cfold support for long (very simple
17374         cases only)
17375
17376         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
17377
17378 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17379
17380         * inssel.brg: fixed memcpy (bug #44219).
17381
17382 2003-06-05  Dick Porter  <dick@ximian.com>
17383
17384         * driver.c: Set the glib log levels to not abort if g_message
17385         recurses.
17386
17387         g_set_prgname() has to happen before mini_init() so that the
17388         process handle gets the info.
17389         
17390 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17391
17392         * driver.c: add intrins to the default optimizations to get wider
17393         exposure.
17394
17395 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17396
17397         * mini.h: some large basic blocks will overflow a 16-bit
17398         integers for symbolic registers.
17399
17400 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17401
17402         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
17403         (mono_arch_output_basic_block): fix bug 43499 
17404
17405 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17406
17407         * mini.c: kill duplicated definition of mono_debug_format.
17408
17409 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
17410
17411         * mini-x86.c, arrays.cs: fixed register allocation bug.
17412
17413 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17414
17415         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
17416
17417         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
17418
17419 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17420
17421         * mini.c:
17422         (print_method_from_ip): also print source location information if
17423         available.
17424
17425 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
17426
17427         * mini.c (mono_find_block_region): bug fix in region code
17428         (mini_method_compile): enable removing unreachable code again, but
17429         only in methods without exception clauses.
17430
17431 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17432
17433         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
17434         Implemented arglist opcode and handling of TypedReference type.
17435         Fixed x86 call convention when a structure is returned.
17436         Minimal support for calling static vararg methods.
17437
17438 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
17439
17440         * mini.c (mini_method_compile):  always remove unreachable code,
17441         because the code in them may be inconsistent  (access to dead
17442         variables for example).
17443
17444 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17445
17446         * driver.c, debug-mini.c: warning fixes.
17447
17448 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
17449
17450         * Makefile.am, jit.h, mini.h: install header for embedding mono.
17451
17452 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
17453
17454         * mini.c: thread-static fields are registered in mono_class_vtable(),
17455         so ensure the function is called before checking for them.
17456
17457 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
17458
17459         * mini.c (optimize_branches): fix for bug 43586
17460
17461         * jit-icalls.c (mono_llmult_ovf): added an additional check for
17462         overflow (fixes Bug #43639)
17463
17464 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17465
17466         * mini.c, objects.cs: allow the use of stobj for primitive types.
17467
17468 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17469
17470         * mini.c: be less strict about argument checking until we support
17471         running the verifier.
17472
17473 2003-05-27  Nick Drochak <ndrochak@gol.com>
17474
17475         * basic-long.cs: tests for (ulong)int * (ulong)int also
17476         * mini.c: use the same trick for (ulong)int * (ulong)int
17477
17478 2003-05-27  Nick Drochak <ndrochak@gol.com>
17479
17480         * basic-long.cs: add regression test for (long)int * (long)int
17481         * cpu-pentium.md: add op_bigmul specification
17482         * inssel-long32.brg: add OP_BIGMUL rule
17483         * mini-ops.h: add OP_BIGMUL
17484         * mini-x86.c: register allocator: handle case where src1 needs to be
17485         in EAX.
17486         * mini.c: substitute special BIGMUL opcode in the tree for 
17487         (long)int * (long)int
17488
17489 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
17490
17491         * jit-icalls.c: call the type ctor on field access if needed.
17492
17493 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17494
17495         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
17496         to a method (including results of ldelema, bug#43207).
17497
17498 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
17499
17500         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
17501         colors to show exception handler blocks.
17502
17503         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
17504         (fix for pinvoke7.cs).
17505
17506 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17507
17508         * mini.h, mini.c: ensure correct initialization order for types that
17509         require it. Prepare for lazy compilation of jit icall wrappers.
17510         Provide a name for opcode emulation to reduce unneeded mallocing.
17511
17512 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
17513
17514         * mini-x86.c: better register restoring code and profiling
17515         support for tail calls.
17516
17517 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17518
17519         * mini.h, driver.c: prepare for leaf methods optimization.
17520
17521 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17522
17523         * mini.c: get targets of branches before converting a method.
17524
17525 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
17526
17527         * mini.c (optimize_branches): added some experimental code (disbaled) 
17528
17529 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
17530
17531         * mini.c (optimize_branches): fix branch to branch optimization 
17532
17533         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
17534
17535         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
17536
17537         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
17538
17539         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
17540         if needed.
17541
17542 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
17543
17544         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
17545         enable use of interface variables again.
17546
17547         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
17548         I1 to registers because there is no simply way to sign extend 8bit
17549         quantities in caller saved registers on x86.
17550
17551         * inssel-float.brg: set costs of some rules to 2 so
17552         that monobure always select the arch. specific ones if supplied,
17553         regardless of the order we pass the files to monoburg.
17554
17555 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17556
17557         * mini.c, mini-x86.c: since the magic trampoline for jumps
17558         can't patch the code directly, we do it as soon as the
17559         method gets compiled.
17560
17561 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17562
17563         * mini-x86.c, mini.h: introduce a new patching method
17564         to support CEE_JMP and tail calls.
17565         * mini.c: obey tail.call. Don't precompile methods target
17566         of CEE_JMP.
17567         * tramp-x86.c: new trampoline code to handle methods
17568         reached through a jump.
17569
17570 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
17571
17572         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
17573         bit values to registers
17574
17575 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
17576
17577         * mini.c (mono_compile_get_interface_var): share interface
17578         variables if possible.
17579
17580 2003-05-16  Martin Baulig  <martin@ximian.com>
17581
17582         * debug-mini.c (mono_init_debugger): New function to initialize
17583         the debugger.  This is not in the debugger since it needs to
17584         access some of mini's internals.
17585
17586 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17587
17588         * mini.c (mono_method_to_ir): inlining fixes/cleanups
17589
17590 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
17591
17592         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
17593         for value type handling.
17594
17595 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17596
17597         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
17598         (mono_method_check_inlining): enable inlining of all kinds of wrappers
17599
17600 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
17601
17602         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
17603           the constructor through a proxy.
17604
17605 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17606
17607         * jit-icalls.c, inssel.brg: fixes to array element address
17608         calculations.
17609
17610 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
17611
17612         * mini-x86.c (is_regsize_var): allocate pointer to registers
17613
17614 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17615
17616         * driver.c: fixed typo, added intrins to the set of optimizations
17617         tested with regressions.
17618
17619 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
17620
17621         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
17622         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
17623         test case.
17624
17625 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
17626
17627         * inssel.brg: remove some common pop instructions without side effects
17628
17629 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17630
17631         * inssel-x86.brg: fixed thinko in int to double conversions.
17632
17633 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
17634
17635         * mini.c, jit-icalls.c: added runtime thread-static variable support.
17636
17637 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17638
17639         * inssel-long32.brg: two more missing instructions.
17640
17641 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
17642
17643         * mini.c (mono_emit_call_args): set the cil_code for all arguments
17644         if not already set.
17645
17646 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
17647
17648         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
17649         correctly.
17650
17651         * basic-float.cs: Added tests for negative zero.
17652
17653 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17654
17655         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
17656         a couple of missing operations for long casts, with test cases.
17657
17658 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17659
17660         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
17661
17662 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
17663
17664         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
17665         code size estimation.
17666
17667 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
17668
17669         * mini.c (mono_jit_create_remoting_trampoline): make it work with
17670         abstract methods (fix bug 42542)
17671
17672         * aot.c: add ability to handle array types
17673         
17674 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
17675
17676         * mini.c: Call the _specific versions of the object allocation
17677         functions if possible.
17678
17679 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17680
17681         * driver.c: call setlocale ().
17682
17683 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17684
17685         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
17686         windows build.
17687
17688 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
17689
17690         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
17691
17692         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
17693         wrappers (fix bug 42122)
17694
17695 2003-05-04  Martin Baulig  <martin@ximian.com>
17696
17697         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
17698
17699         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
17700         s/mini_set_defaults/mono_set_defaults/g.
17701
17702 2003-05-04  Martin Baulig  <martin@ximian.com>
17703
17704         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
17705
17706 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17707
17708         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
17709         (reported by Don Roberts).
17710
17711 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17712
17713         * mini.c: temporarily work around two bugs for this release.
17714
17715 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17716
17717         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
17718         that contains -export-dynamic and it makes using the ld script
17719         useless.
17720         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
17721
17722 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17723
17724         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
17725         specific cpu.
17726
17727 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17728
17729         * mini.c: make sure leave calls all the needed finally blocks,
17730         even when the target jumps out of multiple exception clauses.
17731
17732 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17733
17734         * ldscript, Makefile.am: add linker script to reduce the number of
17735         exported symbols (should also fix the issues with libwine defining
17736         some of the same symbols in io-layer).
17737
17738 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
17739
17740         * driver.c (mini_main): Avoid assertion when no file name is given on 
17741         the command line.
17742
17743 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
17744
17745         * driver.c: added --version/-V command line option.
17746         Added the inline optimization in the regression tests.
17747
17748 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17749
17750         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
17751         to the type in the method signature (fixes bug#42134).
17752
17753 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
17754
17755         * mini.c: when inlining, check this is not null only when needed (bug #42135).
17756
17757 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
17758
17759         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
17760
17761 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17762
17763         * driver.c: fixed bug #42100.
17764
17765 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
17766
17767         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
17768
17769 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17770
17771         * mini.c: moved most of the code required to do inlining to its own
17772         function so it can be reused. Inline also ctors if appropriate.
17773
17774 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
17775
17776         * Makefile.am: Link with -export-dynamic so shared libs loaded by
17777         the runtime can call mono API functions.
17778
17779 2003-04-27  Martin Baulig  <martin@ximian.com>
17780
17781         * debug-mini.c (mono_debug_init_method): Added
17782         `guint32 breakpoint_id' argument; if the method has a breakpoint,
17783         send a notification to the debugger.
17784
17785         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
17786         running in the Mono Debugger, just pass the breakpoint number to
17787         mono_debug_init_method().
17788
17789         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
17790
17791 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
17792
17793         * mini.c: allow some more unsafe compares.
17794
17795 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17796
17797         * mini-x86.c, Makefile.am: make distcheck works (partially from
17798         a patch by Richard Lee <r.h.lee@attbi.com>).
17799         * regset.c, regset.h: removed, they are unused.
17800
17801 2003-04-25  Dick Porter  <dick@ximian.com>
17802
17803         * driver.c: Usage reports the name as 'mono' not 'mini'
17804         * exceptions-x86.c: Build and run on freebsd
17805
17806 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
17807
17808         * Makefile.am: install the program with the 'mono' name and
17809         the library as libmono instead of mini and libmini.
17810
17811 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17812
17813         * driver.c: provide the APIs for the embedding interface of the old jit.
17814
17815 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
17816
17817         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
17818
17819 2003-04-23  Martin Baulig  <martin@ximian.com>
17820
17821         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
17822
17823         * driver.c: Added `--debug' command line argument to enable
17824         debugging support.
17825
17826 2003-04-23  Martin Baulig  <martin@ximian.com>
17827
17828         * debug.[ch]: Removed.  The code is now in
17829         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
17830
17831         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
17832         last six months.
17833
17834 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
17835
17836         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
17837
17838 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17839
17840         * mini.c:
17841         (mini_cleanup): moved mono_runtime_cleanup call after the call to
17842         mono_domain_finalize.
17843         (mini_method_compile): use mono_method_profile* if the the option is
17844         enabled.
17845
17846 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
17847
17848         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17849         methods with their wrapper.
17850
17851         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17852         methods with their wrapper.
17853
17854         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
17855         their wrapper.
17856
17857         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
17858         wrapper.
17859
17860         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
17861         methods.
17862
17863 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
17864
17865         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
17866
17867 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
17868
17869         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
17870         of the mempool. This is slightly faster and uses less memory
17871
17872 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17873
17874         * mini.c: avoid O(n) allocation for variables.
17875
17876 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17877
17878         * mini.c: handle items on the stack after inlining methods.
17879
17880 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17881
17882         * mini.c: make the method->opcode optimization dependent
17883         on MONO_OPT_INSTRINS and do it lazily.
17884
17885 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17886
17887         * driver.c: print overall results at the end of regression run.
17888
17889 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
17890
17891         * inssel.brg: don't overwrite symbolic registers.
17892
17893 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17894
17895         * inssel-x86.brg: fix conversion from long to float.
17896
17897 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
17898
17899         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
17900
17901 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
17902
17903         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
17904
17905         * driver.c: Added --print-vtable option as in the old JIT.
17906
17907 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17908
17909         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
17910
17911 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
17912
17913         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
17914
17915 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
17916
17917         * mini.c regalloc.c regalloc.h: Fix memory leak.
17918
17919 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
17920
17921         * aot.c (mono_aot_get_method): register all used strings
17922
17923 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17924
17925         * mini.c: always intern strings references with ldstr at compile time.
17926
17927 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17928
17929         * Makefile.am: add BUILT_SOURCES.
17930
17931 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17932
17933         * driver.c: give a better error message when the assembly to execute
17934         doesn't have an entry point.
17935
17936 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
17937
17938         * Makefile.am: added hack for automake
17939
17940         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
17941         correct sematics.
17942
17943         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
17944
17945 22003-04-07  Martin Baulig  <martin@ximian.com>
17946
17947         * Makefile.am: Added Makefile.am.
17948
17949         * debugger-main.c: Removed, this is now in the debugger where it
17950         belongs.
17951
17952         * mini.pc.in: Call this package `mini' for the moment.
17953
17954
17955
17956
17957
17958
17959
17960
17961
17962
17963
17964
17965
17966