2008-12-04 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / mini / ChangeLog
1 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * basic-simd.cs: Add tests for new methods.
4
5 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6
7         * simd-intrinsics.c: Add support for operator == and !=
8         on Vector4(u)i.
9
10         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
11
12 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
13
14         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
15
16 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
17
18         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
19
20         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
21         MONO_PATCH_INFO_ICALL_ADDR.
22
23         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
24
25         * aot-compiler.c: Resurrect full-aot support.
26
27 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
28
29         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
30         
31 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
32
33         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
34         
35 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
36
37         * basic-simd.cs: Fix tests to work under ppc.
38         Remove tests for methods that will be removed.
39
40 2008-12-03  Mark Probst  <mark.probst@gmail.com>
41
42         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
43         generic type (via a typedef or typeref) correctly.
44
45 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
46
47         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
48         diagnose an assertion failure.
49
50 2008-12-02  Mark Probst  <mark.probst@gmail.com>
51
52         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
53         Fix trampoline size.
54
55         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
56         conversion opcodes are implemented natively instead via emulation.
57
58 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
59
60         * cpu-mips.md: remove mips_xori
61
62         * mini-ops.h:  remove mips_xori
63
64         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
65
66         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
67         
68         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
69         
70 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
71
72         * cpu-mips.md: fix instruction lengths.
73
74         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
75
76         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
77
78         * mini-ops.h: fix slti / sltiu op profiles.
79         
80 2008-12-02  Martin Baulig  <martin@ximian.com>
81
82         * method-to-ir.c (mono_method_to_ir): Disable debugging
83         information for the init locals block to make the debugger stop
84         after all locals have been initalized.
85
86 2008-12-02  Martin Baulig  <martin@ximian.com>
87
88         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
89         running inside the debugger.
90
91 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
92
93         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
94         is enabled.
95
96         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
97         alu->alu imm optimization which only shows if deadce is disabled.
98
99         * aot-compiler.c: Rename the function names for the binary and asm writers
100         so they can coexist in the same process. Rework the xdebug code to use the
101         asm writer. This avoids the need to call into the runtime to dump the
102         debugging info. Add more debugging info for types.
103
104         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
105
106         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
107         cpu description tables, they can't occur in cpu-<ARCH>.md.
108
109         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
110         the stack in CEE_LDFLDA. Fixes #450542.
111
112         * generics.cs: Add a new test.
113
114 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
115
116         * mini-ops.h: updated MIPS opcodes
117         * mini-mips.c: decompose long opts
118         * mini-mips.h: decompose long opts
119         
120 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
121
122         * cpu-mips.md: fix length on int_rem_un
123         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
124         
125 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
126
127         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
128
129         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
130
131 2008-11-29  Martin Baulig  <martin@ximian.com>
132
133         * mini-exceptions.c (mono_handle_native_sigsegv): Check
134         mono_debug_using_mono_debugger() in addition to the
135         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
136
137 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
138
139         * mini-ops.h: updated more MIPS opcodes
140         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
141         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
142         
143 2008-11-28  Mark Probst  <mark.probst@gmail.com>
144
145         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
146
147 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
148
149         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
150         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
151         * mini-ops.h: correct selected mips opcode entries
152         
153 2008-11-28  Mark Probst  <mark.probst@gmail.com>
154
155         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
156         make them work.
157
158 2008-11-28  Mark Probst  <mark.probst@gmail.com>
159
160         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
161
162 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
163
164         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
165         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
166         * mini-mips.h: disable IMT
167         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
168         
169 2008-11-28  Mark Probst  <mark.probst@gmail.com>
170
171         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
172
173 2008-11-28  Mark Probst  <mark.probst@gmail.com>
174
175         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
176
177 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
178
179         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
180         consistency.
181
182 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
183
184         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
185         for Set/GetVector aligned versions.
186
187 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
188
189         * basic-simd.cs: Add tests for Get/SetVector.
190
191 2008-11-27  Mark Probst  <mark.probst@gmail.com>
192
193         * mini.c: Removed g_slist_append_mempool().  Now in
194         metadata/mempool.c.
195
196 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
197
198         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
199         size properly and make the bounds check optional.
200
201         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
202         for SetVector and IsAligned.
203
204 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
205
206         * mini.c: Remove unused mono_normalize_opcodes () function.
207
208 2008-11-26  Mark Probst  <mark.probst@gmail.com>
209
210         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
211         using the new atomic add ops now.
212
213         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
214         add.
215
216 2008-11-26  Mark Probst  <mark.probst@gmail.com>
217
218         * mini-ppc64.c: Several fixes.
219
220 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
221
222         * cpu-mips.md: added jump_table
223         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
224
225 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
226
227         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
228
229 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
230
231         * mini-ops.h: corrected a handful of MIPS opcodes.
232
233 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
234
235         * aot-compiler.c: MIPS to use ELF writer
236
237 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
238
239         * mini-codegen.c: remove MIPS specific assert.
240
241 2008-11-25  Mark Probst  <mark.probst@gmail.com>
242
243         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
244         fixes.  PPC64 now passes most of the runtime regressions.
245
246 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
247
248         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
249         volatile intervals a bit.
250
251 2008-11-24  Mark Probst  <mark.probst@gmail.com>
252
253         * basic-long.cs: New test case.
254
255 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
256
257         * mini.c (mini_method_compile): Disable globalra for large methods for 
258         now.
259
260         * regalloc2.c (order_moves): Add fp support.
261
262         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
263         source bblock ends with an OP_BR_REG.
264
265         * ratests.cs: Add a new test.
266
267 2008-11-23  Mark Probst  <mark.probst@gmail.com>
268
269         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
270         sharing.  PPC64 now passes generics.exe.
271
272 2008-11-23  Mark Probst  <mark.probst@gmail.com>
273
274         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
275
276 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
277
278         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
279         memory when mono_jit_info_table_find () can't find the method in the
280         LMF case.
281
282         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
283         AOTed code too.
284         
285         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
286         writer too.
287
288 2008-11-23  Mark Probst  <mark.probst@gmail.com>
289
290         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
291         Several fixes.  PPC64 now runs exceptions.exe and
292         devirtualization.exe.
293
294 2008-11-22  Mark Probst  <mark.probst@gmail.com>
295
296         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
297         arrays.exe and basic-math.exe.
298
299 2008-11-22  Mark Probst  <mark.probst@gmail.com>
300
301         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
302         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
303
304 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
305
306         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
307
308 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
309
310         * method-to-ir.c: Move bounds checking macros to ir-emit.h
311
312         * ir-emit.h: Move macros from method-to-ir.c to here.
313
314 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
315
316         * mini-ops.h: Correct the long simd ops to use LREG.
317
318 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
319
320         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
321         
322         * mini-ops.h: Correct the dreg type of a few long opcodes.
323
324         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
325         Add netbsd support.
326
327 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
328
329         * mini-ppc.c: remove negative stack references in epilog
330         for platforms that don't support the red zone.
331
332 2008-11-21  Mark Probst  <mark.probst@gmail.com>
333
334         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
335         point regs.  Now PPC64 passes basic-calls.exe.
336
337 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
338
339         * basic-simd.cs: Add tests for accessors of Vector2l.
340
341 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
342
343         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
344
345         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
346         
347         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
348
349 2008-11-21  Mark Probst  <mark.probst@gmail.com>
350
351         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
352         PPC64 passes basic-long.exe.
353
354 2008-11-20  Mark Probst  <mark.probst@gmail.com>
355
356         * decompose.c: Decompose carry and overflow add on PPC64 like on
357         other 64 bit archs.  Don't decompose sub at all on PPC64.
358
359         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
360         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
361         basic-long.exe.
362
363 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
364
365         * basic-simd.cs: Add tests for accessors of Vector2d.
366
367 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
368
369         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
370
371         * cpu-x86.md: Same.
372
373         * mini-x86.c (mono_arch_output_basic_block): Same.
374         
375         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
376
377 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
378
379         * basic-simd.cs: Add tests for accessors of Vector4f.
380
381 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
382
383         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
384
385         * cpu-x86.md: Same.
386
387         * mini-x86.c (mono_arch_output_basic_block): Same.
388         
389         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
390
391 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
392
393         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
394
395 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
396
397         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
398
399         * cpu-x86.md: Same.
400
401         * mini-x86.c (mono_arch_output_basic_block): Same.
402         
403         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
404
405 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
406
407         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
408
409 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
410
411         * simd-intrinsics.c: Enable setters for Vector16sb.
412
413 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
414
415         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
416
417         * cpu-x86.md: Same.
418
419         * mini-x86.c (mono_arch_output_basic_block): Same.
420         
421         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
422
423 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
424
425         * simd-intrinsics.c: Implement setter for Vector8us.
426
427 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
428
429         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
430         for dead variables.
431
432 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
433
434         * mini-ppc.c: remove references to the red zone in the prolog
435         (for systems that don't support it).
436
437 2008-11-19  Mark Probst  <mark.probst@gmail.com>
438
439         * cpu-ppc64.md: Fixed a few instruction lengths.
440
441         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
442         now.
443
444 2008-11-19  Mark Probst  <mark.probst@gmail.com>
445
446         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
447         basic.exe now.
448
449 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
450
451         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
452
453 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
454
455         * mini-ops.h: Added OP_INSERT_I2.
456
457         * cpu-x86.md: Same.
458
459         * mini-x86.c (mono_arch_output_basic_block): Same.
460         
461         * simd-intrinsics.c: Implement setter for Vector8s.
462
463         * simd-methods.h: Add the names of get setters of Vector8s.
464
465 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
466
467         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
468         
469         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
470         parameters.
471
472         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
473
474 2008-11-18  Mark Probst  <mark.probst@gmail.com>
475
476         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
477         for PPC64.  An empty program runs now.
478
479 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
480
481         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
482
483         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
484         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
485         info for JITted code is emitted into a shared library, loadable into gdb.
486
487 2008-11-18  Mark Probst  <mark.probst@gmail.com>
488
489         * Makefile.am: Changes to build PPC64.
490
491         * mini-arch.h: Include mini-ppc64.h on PPC64.
492
493 2008-11-18  Mark Probst  <mark.probst@gmail.com>
494
495         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
496         in PPC code up to r119147.
497
498 2008-11-18  Mark Probst  <mark.probst@gmail.com>
499
500         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
501         cpu-ppc64.md: Changes for PPC64.
502
503         Based on code submitted by andreas.faerber@web.de at
504         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
505         X11/MIT license.
506
507 2008-11-18  Mark Probst  <mark.probst@gmail.com>
508
509         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
510         cpu-ppc64.md: Copied from the corresponding PPC files from
511         r118846.
512
513 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
514
515         * mini-ops.h: Added OP_ROUND.
516
517         * cpu-x86.md: Added round.
518
519         * mini-x86.c: Added support for intrinsicing Math.Round (double).
520
521         * basic-math.cs: Added test_0_round to test rounding.
522
523         Contributed under MIT/X11 license.
524
525 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
526
527         * aot-compiler.c : Fix the Winx64 build.
528
529         Contributed under MIT/X11 license.
530
531 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
532
533         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
534         in OP_EXTRACT_R8 to avoid possible stack corruption.
535
536 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
537
538         * mini-ops.h: Added OP_EXTRACT_R8/I8.
539
540         * cpu-x86.md: Added extract_r8.
541
542         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
543         
544         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
545         a couple of OP_EXTRACT_I4.
546
547         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
548
549         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
550
551 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
552
553         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
554         and not 4.1. 
555
556 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
557
558         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
559         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
560
561         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
562         are not needed any more.
563
564         * mini.h: Remove the unused INS_LIST macros.
565
566         * mini.c (mini_method_compile): Remove a disable globalra case which is no
567         longer needed.
568
569         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
570         ir-emit.h.
571
572         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
573         mono_alloc_ireg () instead.
574
575         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
576         macros.
577
578         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
579         on amd64.
580
581         * aot-runtime.c (load_aot_module): Disable AOT when running under
582         CAS.
583
584         * mini-amd64.h: Change the monitor fastpath defines to check for
585         !PLATFORM_WIN32 so they work on *bsd too.
586
587         * mini.h mini.c mini-hhpa.c: Remove more unused code.
588
589         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
590
591         * mini.h (MonoCompile): Remove new_ir flag.
592
593         * regalloc.h regalloc.c: Remove unused code.
594
595         * cpu-*.md: Remove more unused opcodes.
596
597         * simple-cee-ops.h simple-mini-ops.h: Removed.
598
599         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
600         
601 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
602
603         * aliasing.h: Removed.
604
605         * *.c: Remove references to aliasing.h and inssel.h.
606
607         * mini.c: Remove additional unused functions.
608
609         * mini-ops.h cpu-*.md: Remove unused opcodes.
610
611 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
612
613         Remove the old JIT code.
614
615         * inssel*.brg: Removed.
616
617         * ssa.c abcremoval.c aliasing.c: Removed.
618
619         * ssa2.c: Renamed to ssa.c.
620
621         * abcremoval2.c: Renamed to abcremoval.c.
622
623         * *.c: Removed all !cfg->new_ir code.
624
625         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
626         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
627
628         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
629         
630 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
631
632         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
633         to simplify the code and cut back on the number of global symbols in the AOT
634         file.
635         
636         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
637
638 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
639
640         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
641         with the got/got_info tables.
642
643         * mini.h: Bump AOT file format version.
644         
645         * unwind.h: New file, contains definitions for stack unwinding.
646
647         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
648         to cfg->unwind_ops.
649         
650         * aot-compiler.c: Generalize the emitting of unwind information to use the
651         information in cfg->unwind_ops.
652
653         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
654
655         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
656         AOT method frames. Enable writing symbols for methods by default.
657
658 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
659
660         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
661         and make it work with vectors of element sizes 1, 2 and 4.
662
663         * simd-intrinsics.c: Enable getter for all vectors with element size
664         1, 2 or 4.
665
666         * simd-methods.h: Add the names of other getters.
667
668         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
669
670         * cpu-x86.md: Same.
671
672         * mini-x86.c: Same.
673
674 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
675
676         * mini-ppc.h: portability fix.
677
678 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
679
680         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
681         buggy and will overwrite it.
682
683 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
684
685         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
686         Use it to emit local symbols for all methods so AOTed methods show up with
687         their full name in gdb/valgrind output.
688
689 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
690
691         * mini-ppc.c: portability fixes.
692
693 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
694
695         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
696         entries out of the if (!generic_shared...) code so it is always done.
697         (mono_class_init_trampoline): Do the patching when running under valgrind
698         too, newer versions of valgrind have no problems with it.
699
700 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
701
702         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
703         further sections.
704
705 2008-11-13  Mark Probst  <mark.probst@gmail.com>
706
707         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
708         filters.
709
710 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
711
712         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
713
714 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
715
716         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
717
718         * cpu-x86.md: Same.
719
720         * mini-x86.c: Same.
721
722         * simd-intrinsics.c: Same.
723
724 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
725
726         * simd-intrinsics.c: Enable constructor intrinsics for all types.
727
728 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
729
730         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
731         to work with more Vector types.
732
733 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
734
735         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
736         store the elemens directly instead of using and intermediate.
737
738 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
739
740         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
741
742         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
743         to preserve %eax for aot plt trampolines.
744
745         * aot-compiler.c (compile_method): Don't skip synchronized methods.
746         (encode_method_ref): Flag synchronized methods so they won't go through
747         the AOT trampoline.
748
749         * aot-compiler.c: Additional work to support AOTing synchronized methods/
750         wrappers.
751
752         * cpu-ia64.md (jmp): Increase max length.
753
754 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
755
756         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
757         open generic classes.
758
759         * aot-compiler.c: Enable the ELF writer on ELF platforms.
760
761         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
762         box+brtrue optimization since it causes test failures on x86.
763
764 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
765
766         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
767
768         * cpu-x86.md: Same.
769
770         * mini-x86.c: Same.
771
772         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
773         for simd ctor values. 
774
775         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
776         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
777
778 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
779
780         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
781         LogicalRightShift.
782
783         * simd-instrincs.c: Same.
784
785         * basic-simd.cs: Same.
786
787 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
788
789         * ratests.cs: Add more tests.
790
791         * regalloc2.c (add_spill_code): Handle more corner cases.
792
793 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
794
795         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
796         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
797         both the source an destination of an instruction.
798
799 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
800
801         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
802         wapihandles.c: more portability changes.
803
804 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
805
806         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
807         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
808         safe to execute in a signal handler and the kernel provides better
809         the info in /proc/self/smaps. Avoid the assert on sigaction during
810         cleanup.
811
812 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
813
814         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
815         do the bblock linking hack if it is actually needed.
816
817         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
818         up linking.
819
820         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
821         crash problem is fixed.
822
823         * branch-opts.c (mono_remove_critical_edges): Link up newly added
824         bblocks.
825
826         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
827         for catch clauses.
828         (mini_method_compile): Set the starting value of next_vreg to 
829         MAX_IREGS + MAX_FREGS when using globalra.
830
831         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
832         filter clauses with BB_EXCEPTION_HANDLER.
833
834         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
835
836 2008-11-10  Mark Probst  <mark.probst@gmail.com>
837
838         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
839         space for stdcall.  Fixes regressions on Win32.
840
841 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
842
843         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
844         bblocks.
845         (linear_scan): Remove an assert which doesn't seem to be needed.
846
847         * local-propagation.c (mono_local_deadce): Avoid a call to
848         MONO_DELETE_INS which would screw up the instruction linking.
849
850         * mini.c (mono_decompose_op_imm): Make this work with globalra.
851
852         * regalloc2.c: Upgrade to work the current JIT code.
853
854 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
855
856         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
857         case.
858
859         * aot-runtime.c: Remove some dead code.
860
861         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
862         consistency.
863         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
864
865         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
866         trampolines using sscanf since atoi doesn't work on large unsigned values.
867
868         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
869         Initialize code_size.
870
871 2008-11-08  Mark Probst  <mark.probst@gmail.com>
872
873         * method-to-ir.c (mini_emit_inst_for_method): Make
874         Interlocked.CompareExchange work for Int arguments on 32 bit
875         archs, as well.
876
877 2008-11-07  Mark Probst  <mark.probst@gmail.com>
878
879         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
880
881 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
882
883         * main.c Fix MSVC build.
884
885         Contributed under MIT/X11 license.
886
887 2008-11-06  Mark Probst  <mark.probst@gmail.com>
888
889         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
890         alignment larger than 8 bytes are aligned correctly, too.
891
892         * mini.c: Honor the min_align field of MonoClass when laying out
893         the stack.
894
895 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
896
897         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
898
899         * aot-compiler.c (emit_plt): Fix a warning.
900         
901         * aot-compiler.c: Implement ARM support in the binary writer.
902
903 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
904
905         * basic-simd.cs: Add test for getter with byref arg.
906         Fix the naming of a few tests.
907         Add missing checks to a test.
908
909 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
910
911         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
912
913         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
914         most of the full-aot support for monitor enter/exit trampolines.
915
916         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
917         enter/exit trampoline creation functions.
918
919         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
920         make dist.
921
922 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
923
924         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
925         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
926         implement the needed functionality without adding crap to the runtime.
927
928 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
929
930         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
931         non-x86 builds.
932
933         * mini.c (mono_build_date): New global version holding the build date in
934         string format.
935         
936         * Makefile.am (buildver.c): Generate a file containing the build date.
937
938         * main.c: Set the build date from the generated file.
939
940         * mini.c (mono_get_runtime_build_info): New helper function returning build
941         information in a string format.
942         
943         * driver.c (mono_main): Print the build date in --version.
944
945         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
946         file when the bind-to-runtime-version option is used.
947
948 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
949
950         * simd-intrinsics.c: Fix bug when using getters and byref args. 
951
952 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
953
954         * simd-methods.h: Rename prefetch methods.
955
956         * simd-intrinsics.c: Same.      
957
958 2008-11-05  Mark Probst  <mark.probst@gmail.com>
959
960         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
961         sizes.
962
963 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
964
965         * aot-compiler.c: Use the bundled elf header files instead of depending on
966         the system one.
967         
968         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
969         mempool.
970
971         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
972         on every call.
973
974 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
975
976         * cpu-x86.md: Add store nta ops.
977
978         * mini-ops.h: Same.
979
980         * mini-x86.c: Same.
981
982         * mini.h: Add an enum for simd prefetch modes.
983
984         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
985         of store. Use the changed code to support store nta.
986
987         * simd-intrinsics.c: Add prefetch ops for all vector types.
988
989 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
990
991         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
992         threads.
993         
994         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
995         names.
996
997         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
998         trampolines.
999
1000 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1001
1002         * mini-x86.c: Fixed commit.
1003
1004 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1005
1006         * aot-compiler.c (emit_plt): Align the plt section only on x86.
1007
1008 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1009
1010         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
1011         and MONITOR_EXIT, for the ASM fastpaths.
1012
1013         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
1014         available.
1015
1016         * mini.c, patch-info.h: Signature and patch infos for
1017         Monitor.Enter/Exit trampolines.
1018
1019         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
1020
1021         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
1022         Monitor.Enter/Exit ASM fastpath for Linux.
1023
1024 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1025
1026         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
1027
1028         * objects.cs: Add a new test.
1029         
1030         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
1031
1032         * aot-runtime.c (load_method): Run class initialization in the PLT case even
1033         if MONO_LOG_LEVEL is set.
1034
1035         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
1036
1037         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
1038
1039         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
1040         
1041         * aot-compiler.c: Change the relocation code to use virtual addresses instead
1042         of file offsets. Align the sections belonging to the data segment to 
1043         PAGESIZE.
1044
1045 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
1046
1047         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
1048         elf.h. Port it to amd64.
1049
1050 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1051
1052         * driver.c: Enable SIMD by default.
1053
1054 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1055
1056         * cpu-x86.md: Add prefetch op.
1057
1058         * mini-ops.h: Same.
1059
1060         * mini-x86.c: Same.
1061
1062         * mini.h: Add an enum for simd prefetch modes.
1063
1064         * simd-methods.h: Add prefetch function names.
1065
1066         * simd-intrinsics.c: Add prefetch ops for all vector types.
1067
1068 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
1069
1070         * aot-compiler.c (emit_bytes): Speed this up a little.
1071
1072 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
1073
1074         * aot-compiler.c: Add JIT time etc. statistics.
1075         
1076         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
1077
1078         * mini.h (MonoCompile): Add 'got_offset' field.
1079
1080         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
1081         method_got_offsets array.
1082
1083         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
1084         wrappers.
1085
1086         * aot-compiler.c (compile_method): Add generic method instances referenced
1087         by the method to the list of methods to be compiled, this is required so if
1088         A<T> references B<T>, and another assembly references A<int>, then it will
1089         also get a copy of B<int>.
1090
1091         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
1092         when checking for monitor enter/exit.
1093
1094 2008-10-30  Mark Probst  <mark.probst@gmail.com>
1095
1096         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
1097         for Monitor.Enter and Monitor.Exit if enabled.
1098
1099         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
1100         Solaris.
1101
1102 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
1103
1104         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
1105         of an OP_MOVE. Fixes #440046.
1106
1107         * basic-long.cs: Add a new test.
1108
1109 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
1110
1111         * mini.h: Add synchronization note for the managed counter-part.
1112
1113         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
1114         returns the simd caps of the current cpu.
1115
1116 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
1117
1118         * basic-simd.cs: Remove Console.WriteLine.
1119
1120 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1121
1122         * basic-simd.cs: New tests for Vector2ul.
1123
1124 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1125
1126         * simd-intrinsics.c: Add new vector type Vector2ul.
1127
1128 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1129
1130         * basic-simd.cs: New tests for Vector2l.
1131
1132 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1133
1134         * cpu-x86.md: Add long version of most packed int ops.
1135
1136         * mini-ops.h: Same.
1137
1138         * mini-x86.h: Same.
1139
1140         * simd-intrinsics.c: Add new vector type Vector2l.
1141
1142 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1143
1144         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
1145
1146         * simd-methods.h: Remove SN_op_BitwiseXor.
1147
1148 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
1149
1150         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
1151         alignment.
1152
1153 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1154
1155         * basic-simd.cs: Test for Vector2d.
1156
1157         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
1158         value.
1159
1160 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1161
1162         * cpu-x86.md: Add double version of all packed float ops.
1163
1164         * mini-ops.h: Same.
1165
1166         * mini-x86.h: Same.
1167
1168         * simd-intrinsics.c: Add new vector type Vector2d.
1169
1170         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
1171
1172         * simd-methods.h: Add Duplicate.
1173
1174 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1175
1176         * basic-simd.cs: Test for packing with signed saturation.
1177
1178 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
1179
1180         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
1181         found in the TYPESPEC table.
1182
1183 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
1184
1185         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
1186         too.
1187
1188         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
1189
1190         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
1191         instead of the RVA, since the RVA can be changed by tools like the cil 
1192         stripper.
1193
1194         * method-to-ir.c (mono_method_to_ir2): Ditto.
1195
1196         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
1197         (deserialize_variable): Ditto.
1198
1199 2008-10-25  Martin Baulig  <martin@ximian.com>
1200
1201         * debug-mini.c (write_variable): Use
1202         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
1203
1204 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1205
1206         * cpu-x86.md: Add unsigned variants of packd and packw.
1207
1208         * mini-ops.h: Same.
1209
1210         * mini-x86.h: Emit the right instruction for packd and packw.
1211         Add unsigned variants of packd and packw.
1212
1213         * simd-intrinsics.c: Packd and packw were used in place of their
1214         unsigned variants. Change that.
1215         Add intrinsics for (Signed)PackWithSignedSaturation.
1216
1217         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
1218
1219 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1220
1221         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
1222
1223 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1224
1225         * mini-ops.h: Remove dword packed add/sub with saturation ops.
1226
1227         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
1228
1229         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
1230         sse instructions.
1231
1232         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
1233
1234 2008-10-24  Mark Probst  <mark.probst@gmail.com>
1235
1236         * method-to-ir.c, mini.c: Special casing for the synchronized
1237         wrapper for the ldtoken+GetTypeFromHandle case.
1238
1239 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1240
1241         * mini.c (mono_replace_ins): Move this to branch-opts.c.
1242
1243         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
1244         created/split bblocks.
1245
1246 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1247
1248         * mini-ops.h: Add packed signed mul high.
1249         
1250         * cpu-x86.md: Same.
1251
1252         * mini-x86.c (mono_arch_output_basic_block): Same.
1253
1254         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
1255
1256         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
1257
1258 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1259
1260         * basic-simd.cs: Tests for Vector16sb.
1261
1262 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1263
1264         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
1265
1266 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1267
1268         * mini-ops.h: Add packed signed min, max and compare greater.
1269         
1270         * cpu-x86.md: Same.
1271
1272         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
1273         saturation.
1274
1275         * simd-methods.h: Add CompareGreaterThan.
1276
1277         * simd-methods.h: Remove CompareEquals.
1278
1279         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
1280
1281         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
1282
1283         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
1284         CompareEqual.
1285
1286 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1287
1288         * basic-simd.cs: Fix tests due to change in the API.
1289
1290 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1291
1292         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
1293
1294 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1295
1296         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
1297
1298         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
1299         inst_offset as this has invalid values for LDADDR.
1300
1301 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1302
1303         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1304
1305         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
1306
1307 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1308
1309         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
1310         for accessing field->data.
1311
1312 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1313
1314         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1315
1316 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1317
1318         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
1319
1320         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
1321
1322 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1323
1324         * dominators.c (mono_compute_natural_loops): Allocate GList enties
1325         from the cfg mempool.
1326
1327 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1328
1329         * basic-simd.cs: Tests for new methods in Vector8us.
1330
1331 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1332
1333         * mini-ops.h: Add multiply and store high.
1334         
1335         * cpu-x86.md: Same.
1336
1337         * mini-x86.c (mono_arch_output_basic_block): Same.
1338
1339         * simd-methods.h: Same.
1340
1341         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
1342         and CompareEqual.
1343
1344 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1345
1346         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
1347         mono_class_setup_vtable ().
1348
1349         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
1350         mono_class_get_vtable_entry () for accessing klass->vtable.
1351
1352         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
1353
1354         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
1355         found.
1356
1357         * method-to-ir.c (mono_save_token_info): Don't save references made from
1358         wrappers.
1359
1360         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
1361         of generic instances.
1362
1363         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
1364
1365 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1366
1367         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
1368         OP_JMP depends on the method signature.  Calculate it properly.
1369
1370 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1371         
1372         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
1373         called directly.
1374
1375         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
1376         instances.
1377         (emit_extra_methods): Add another table mapping method indexes to 
1378         offsets in the extra_method_info table.
1379
1380         * mini.h: Bump AOT file format version.
1381         
1382         * aot-runtime.c: Merge most of the code from mono_aot_get_method
1383         and mono_aot_get_method_from_token () into one function.
1384
1385 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1386
1387         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
1388         separate counter.
1389
1390 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
1391
1392         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
1393         methods.
1394
1395         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
1396         disable_aot.
1397
1398         * mini.c (mono_patch_info_equal): Compare the generic context as well.
1399
1400         * mini.h: Bump aot file format version.
1401
1402         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
1403         AOT file can contain native code for methods which are not in the METHOD
1404         table. Generate code for non-sharable generic instances of generic methods
1405         found in the METHODSPEC table.
1406         
1407         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
1408         encoding generic type handles.
1409
1410         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
1411         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
1412
1413         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
1414         macros + MONO_ADD_INS.
1415
1416         * mini.c (mono_jump_info_token_new2): New function which takes a generic
1417         context as well.
1418
1419         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
1420
1421         * mini.h: Bump aot file format version.
1422
1423         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
1424
1425 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1426
1427         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
1428         platforms, with definable stack alignment value.  Set to 16 now
1429         for all platforms.
1430
1431         * mini.c, mini.h, driver.c: Command line option for disabling
1432         stack alignment.
1433
1434 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1435
1436         * basic-simd.cs: Tests for new methods in Vector4ui.
1437
1438 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1439
1440         * mini-ops.h: Add packed int shuffle.
1441         
1442         * cpu-x86.md: Same.
1443
1444         * mini-x86.c (mono_arch_output_basic_block): Same.
1445
1446         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
1447         extract mask, max, min, shuffle.
1448
1449         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
1450
1451 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1452
1453         * basic-simd.cs: Tests for new methods in Vector8us.
1454
1455 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1456
1457         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
1458         RuntimeTypeHandle, not a TypedReference.
1459
1460 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
1461
1462         * simd-intrinsics.c: remove relocations.
1463
1464 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
1465
1466         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
1467         optimizations from the x86 backend.
1468
1469 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
1470
1471         * simd-methods.h, simd-intrinsics.c: debloat method names and
1472         prepare for no relocations.
1473
1474 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1475
1476         * mini-ops.h: Add packed min/equal and sum of absolute differences.
1477         
1478         * cpu-x86.md: Same.
1479
1480         * mini-x86.c (mono_arch_output_basic_block): Same.
1481
1482         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
1483         extract mask, max, min and sum of absolute differences.
1484
1485         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
1486         method name.
1487
1488 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1489
1490         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
1491         Renamed one test for consistency.
1492
1493 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1494
1495         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
1496         fix to the code that deal with other blocks.
1497
1498 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1499
1500         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
1501
1502 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1503
1504         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
1505         that deals with vreg interference. Explicitly check for OP_LDADDR to be
1506         able to process the source reg.
1507
1508 2008-10-16  Martin Baulig  <martin@ximian.com>
1509
1510         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
1511
1512         * inssel.brg: Add `OP_HARD_NOP'.
1513
1514         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
1515
1516         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
1517         `OP_HARD_NOP' instruction when running inside the debugger.
1518
1519         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
1520         `OP_HARD_NOP' instruction when running inside the debugger.
1521
1522 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1523
1524         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
1525         now works. The issue with the regalloc tripping up no longer
1526         happens.
1527
1528         * simd-intrinsics.c (load_simd_vreg): Same.
1529
1530 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1531         
1532         * basic-simd.cs: Tests for new Vector8ui methods.
1533
1534 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1535
1536         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
1537         only for type. This fixes crashes where MonoInst::klass is checked
1538         for ops of type != VTYPE or OBJ.
1539
1540         * simd-intrinsics.c (load_simd_vreg): Same.
1541
1542 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1543
1544         * mini-ops.h: Add ops for packed shuffle/max/avg and
1545         extract mask.
1546         
1547         * cpu-x86.md: Same.
1548
1549         * mini-x86.c (mono_arch_output_basic_block): Same.
1550
1551         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
1552         extract mask.
1553
1554         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
1555         to emit extract mask op.
1556
1557         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
1558         to emit word shuffles.
1559
1560 2008-10-15  Mark Probst  <mark.probst@gmail.com>
1561
1562         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
1563         the largest alignment needed by a variable, but at least
1564         sizeof(gpointer).
1565
1566 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1567
1568         * basic-simd.cs: Tests for the fixes in the last commit.
1569
1570 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1571
1572         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
1573         no longer handles STACK_PTR input.
1574
1575         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
1576
1577         * simd-intrinsics.c (load_simd_vreg): New function that works like 
1578         get_simd_vreg   but handles STACK_PTR input.
1579
1580         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
1581         as the input can be an arbitrary pointer.
1582
1583         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
1584         LDADDR local optimization directly otherwise use a store op.
1585
1586 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1587
1588         * basic-simd.cs: Tests for dup low and dup high.
1589
1590 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1591
1592         * mini-ops.h: Add dup low and dup high ops.
1593         
1594         * cpu-x86.md: Same.
1595
1596         * mini-x86.c (mono_arch_output_basic_block): Same.
1597
1598         * simd-intrinsics.c (vector4f_intrinsics): Same.
1599
1600 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1601
1602         * basic-simd.cs: Tests for recently added functionality.
1603
1604 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1605
1606         * mini-ops.h: Add remaining sse1 fp ops.
1607         
1608         * cpu-x86.md: Add remaining sse1 fp ops.
1609
1610         * mini-x86.c (mono_arch_output_basic_block): Same.
1611
1612         * mini.h: Add enum for simd FP compare conditions.
1613
1614         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
1615
1616         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
1617         so the backed can generate the appropriate op.
1618
1619 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1620         This patch squeese one more byte from the SimdIntrinsc struct.
1621
1622         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
1623         a a shift amount intead of simply or'ing it.
1624
1625         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
1626
1627         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
1628         byte so we can have an aditional flags field without increasing struct size.
1629
1630         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
1631         against the simd_supported_versions bitmask.
1632
1633         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
1634
1635 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
1636
1637         * mini.c: remove rawbuffer code (the only use here is unsafe because
1638         it takes locks during signal handling and the kernel now provides much
1639         better info in proc/pid/smaps these days).
1640
1641 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
1642
1643         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
1644         OP_X86_PUSH_OBJ. Fixes #434620.
1645
1646         * objects.cs: Add a test.
1647         
1648 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
1649
1650         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
1651         that the packuswb/packusdw don't work with unsigned numbers for what
1652         would be negative numbers in signed format.
1653
1654         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
1655         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
1656
1657         * mini-ops.h: Add doubleword forms of many ops and packing ones.
1658
1659         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
1660
1661         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
1662
1663         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
1664
1665         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
1666         add more ops.
1667
1668         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
1669         version as the enum in mini.h.
1670
1671         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
1672         for sse3 ops, check the simd_version field if present. This way the code
1673         works with all versions of sse.
1674
1675 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1676
1677         * simd-intrinsics.c: Fixed intrinsic name typo.
1678
1679         * mini.h: Added missing simd exported function.
1680
1681         * basic-simd.cs: Added tests for Vector4ui.
1682         Fixed broken test for Vector16b.
1683
1684 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
1685
1686         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
1687         the max length to 64.
1688
1689 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1690
1691         * method-to-ir.c: Only do the fast virtual generic method call for
1692         non-wrapper methods.
1693
1694         * mini.h, mini-trampolines.c: The new generic virtual remoting
1695         trampoline handles virtual method calls via the vtable (as done by
1696         the fast virtual generic method calls) to remoting proxies.
1697
1698         * mini.c (mono_jit_create_remoting_trampoline): For generic
1699         methods reate a generic virtual remoting trampoline.
1700
1701         * mini-amd64.h: Enable fast virtual generic method calls again.
1702
1703 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1704
1705         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
1706         restore registers when doing tail calls.
1707
1708 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1709
1710         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
1711         Vector4ui.
1712
1713 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1714
1715         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
1716
1717 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1718
1719         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
1720
1721 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1722
1723         * basic-simd.cs: Retrofit for API changes.
1724
1725 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1726
1727         * mini-ppc.c: Handle integer stack arguments for tail calls.
1728
1729 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1730
1731         * optflags-def.h: Removed sse3 optimization.
1732
1733         * driver.c: Same.
1734
1735         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
1736         sse3.
1737
1738         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
1739
1740         * mini.h: Added enumeration with simd versions.
1741
1742         * simd-intrinsics.c (emit_intrinsics): Use the new static var
1743         for detecting SSE3.
1744
1745         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
1746
1747         * mini.c (mini_init): Call mono_simd_intrinsics_init.
1748
1749 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1750
1751         * basic-simd.cs: Added tests for Vector8u and Vector16u.
1752
1753         * basic-simd.cs: Fixed test naming.
1754
1755 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1756
1757         * mini-ops.h: Added ops for packed and saturated math, shifts
1758         and packing/unpacking.
1759
1760         * cpu-x86.md: Added descriptors for the above ops.
1761
1762         * mini-x86.c: Added code to emmit the above ops.
1763
1764         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
1765
1766 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
1767
1768         * aot-compiler.c (compile_method): Enable AOT for generic code.
1769
1770         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
1771
1772 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
1773
1774         * mini.c: add a workaround for a common screwup that ends up blamed
1775         to mono (other processes blocking signal delivery).
1776
1777 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1778
1779         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
1780         in the LDFLD/STFLD opcodes. Fixes #432673.
1781
1782         * iltests.il.in: Add a new test.
1783
1784 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
1785
1786         * mini-arm.c: attach the thread in unmanaged->managed transitions
1787         using delegates (bug #433148).
1788
1789 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1790
1791        * basic-simd.cs: Use new ShuffleSel constants.
1792
1793 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1794
1795         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
1796
1797         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
1798         only disable simd intrinsics if no sse2 is detected.
1799
1800         * optflags-def.h: Added sse3.
1801
1802         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
1803         is disabled.
1804
1805 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1806
1807         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
1808         when adding delegate-invoke wrappers.
1809
1810 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1811
1812         * Makefile.am: Reenable the simd tests.
1813
1814 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
1815
1816         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
1817           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
1818           other vreg is allocated to that hreg.
1819
1820         Contributed under MIT/X11 license.
1821
1822 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1823
1824         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
1825         yet checked in.
1826
1827 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1828
1829         * basic-simd.cs: New test suite for SIMD intrinsics.
1830
1831         * Makefile.am: Added new tests.
1832
1833 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1834
1835         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
1836
1837         * mini-ops.h: Same.
1838
1839         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
1840
1841         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
1842         using SSE2 aware opcodes.
1843
1844         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
1845         is enabled, this code path is only reachable if conversion ops are emmited after
1846         mono_method_to_ir.
1847
1848         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
1849
1850         This optimization saves 6 bytes per conversion against the old version.
1851
1852 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1853
1854         * aot-compiler.c (compile_method): Don't skip methods referencing 
1855         generic methods without a corresponding entry in token_info_hash, since
1856         encode_method_ref () can handle all generic methods now.
1857
1858         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
1859         generic context is set.
1860         
1861         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
1862         generic sharing of LDTOKEN.
1863
1864 2008-10-06  Mark Probst  <mark.probst@gmail.com>
1865
1866         * mini-amd64.h: Temporarily disabled fast virtual generic method
1867         calls because it breaks the System.Runtime.Remoting tests.
1868
1869 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1870
1871         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
1872
1873         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
1874         so inlining actually works.
1875         (check_inline_caller_method_name_limit): Ditto.
1876
1877 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
1878
1879         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
1880         64 bit safety (from Olaf Hering and Andreas Färber).
1881
1882 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1883         
1884         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
1885         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
1886         unused virtual call support code.
1887
1888         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
1889         
1890         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
1891         which can't use aot trampolines.
1892         (decode_patch): Don't create aot trampolines for methods which can't use
1893         them.
1894
1895         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
1896         use aot trampolines.
1897
1898         * mini.h: Bump AOT image format version.
1899         
1900 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
1901
1902         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
1903         to save_token_info () since cmethod is inflated for constrained calls.
1904
1905         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
1906
1907 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
1908
1909         * Makefile.am: Add build rules for ppc64.
1910         This avoids the build failing at pedump with unresolved symbols
1911         due to lack of arch_sources. Instead it will now fail earlier
1912         due to lack of cpu-ppc64.md.
1913
1914         Contributed under MIT/X11 license.
1915
1916 2008-10-04  Mark Probst  <mark.probst@gmail.com>
1917
1918         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
1919         tail calls.
1920
1921         * iltests.il.in: Add test case for tail call with many arguments.
1922
1923 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
1924
1925         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
1926         to the fast virtual generic method code until the aot case is fixed.
1927
1928 2008-10-03  Mark Probst  <mark.probst@gmail.com>
1929
1930         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
1931
1932 2008-10-03  Mark Probst  <mark.probst@gmail.com>
1933
1934         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
1935         thunks.
1936
1937 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
1938         
1939         * simd-intrinsics.c: Forgot to add this one.
1940
1941         * mini-codegen.c: Fix macro in case SIMD is not supported.
1942
1943 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
1944         
1945         This patch land initial JIT support for simd intrinsics.
1946
1947         * mini-x86.h: Added new define to make --enable_minimal work on x86.
1948
1949         * Makefile.am: Added simd-intrinsics.c
1950
1951         * simd-intrinsics.c: New file with simd instrinsic related
1952         code.
1953
1954         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
1955
1956         * cpu-x86.md: Add simd related instructions.
1957
1958         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
1959
1960         * driver.c: Added two new --regression variants.
1961
1962         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
1963
1964         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
1965
1966         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
1967         extract some complicated logic to helper functions.
1968
1969         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
1970
1971         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
1972
1973         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
1974         the specialized simplification pass.
1975
1976         * method-to-ir.c (mono_spill_global_vars): Use new macro.
1977
1978         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
1979
1980         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
1981         table.
1982
1983         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
1984         if MONO_ARCH_NEED_SIMD_BANK is defined.
1985
1986         * mini-ops.h: Added the new simd ops.
1987
1988         * mini-x86.c: Added mono_arch_xregname.
1989
1990         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
1991
1992         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
1993
1994         * mini-x86.h: Define simd related MONO_ARCH macros.
1995
1996         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
1997
1998         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
1999
2000         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
2001         MONO_CLASS_IS_SIMD to deal with simd related IR.
2002
2003         * mini.h (MonoInst): Added spill_var to the backend union.
2004
2005         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
2006
2007         * mini.h: Added forward declarations of the new simd fuctions.
2008
2009         * optflags-def.h: Added new optimization names SIMD.
2010
2011         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
2012
2013         * regalloc.h: Added support for working with 3 register banks.
2014
2015         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
2016
2017         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
2018
2019 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
2020
2021         * mini-exceptions.c: remove 64 bit related ifdef clutter.
2022
2023 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
2024
2025         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
2026         instead of one on 64 bit systems.
2027
2028         * method-to-ir.c: Remove unused includes.
2029
2030 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
2031
2032         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
2033         cfg->used_int_regs, since the two are different on arm.
2034
2035 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2036
2037         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
2038         mono_method_get_vtable_index() to get the vtable index.
2039
2040 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2041
2042         * method-to-ir.c (mono_method_to_ir2): Don't create native
2043         wrappers for array methods, because they're never called (and if
2044         they were called they wouldn't work).
2045
2046 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2047
2048         * method-to-ir.c (mono_method_to_ir2): Array methods are
2049         special-cased and must not be invoked indirectly via the (M)RGCTX
2050         when generic sharing is turned on.  Fixes #431413.
2051
2052 2008-10-01  Mark Probst  <mark.probst@gmail.com>
2053
2054         * method-to-ir.c: When generic sharing is active, call
2055         non-interface virtual generic methods via the standard trampoline.
2056
2057         * mini-trampolines.c: Handle virtual generic shared methods.
2058
2059         * mini.h, mini-x86.c, mini-x86.h: New argument for
2060         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
2061         method thunks and which is the trampoline to call if the lookup
2062         fails.  Enable the virtual generic method thunk for x86.
2063
2064         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
2065         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
2066         argument but assert that it's NULL, because these archs don't yet
2067         implement the virtual generic method thunk.  Changes in the IMT
2068         thunk data structures.
2069
2070 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * aot-compiler.c (emit_globals): Avoid invalid characters in
2073         the static linking symbol.
2074
2075         * objects.cs: Add a test for the range check optimization. Fix warnings.
2076
2077         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
2078         optimization from the current JIT.
2079
2080         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
2081         later in decompose_array_access_opts () to allow more optimizations.
2082
2083         * method-to-ir.c (mono_handle_soft_float): Rename this to 
2084         mono_decompose_soft_float () for consistency.
2085
2086         * mini-ops.h: Fix arguments of OP_STRLEN.
2087
2088         * method-to-ir.c (save_cast_details): Extract the cast details saving code
2089         into a separate function.
2090         (reset_cast_details): Ditto.
2091         (handle_unbox): Save cast details. Fixes #431254.
2092
2093         * method-to-ir.c: Remove some obsolete FIXMEs.
2094
2095 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2096
2097         * ir-emit.h (alloc_dreg): Write a warning before crashing.
2098
2099 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2100
2101         * mini-codegen.c: More work on macros to make them
2102         ready for multiple regbanks.
2103
2104 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2105
2106         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
2107
2108         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
2109
2110 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2111
2112         * mini-codegen.c (mono_spillvar_offset): Proper support for
2113         multiple regbanks.
2114
2115 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
2116
2117         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
2118         the stack overflow changes.
2119
2120 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2121
2122         * mini-codegen.c: Make all bank macros depend on reg_bank.
2123
2124         * mini-codegen.c (mono_local_regalloc): Make free mask
2125         initialization regbank aware.
2126
2127 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2128
2129         * mini-codegen.c (mono_local_regalloc): Extract callee
2130         mask selection to a function and make it regbank aware.
2131
2132 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
2133
2134         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
2135         code to deal with many regbanks.
2136
2137 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * mini-codegen.c: More fp->regbank changes.
2140
2141 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
2142
2143         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
2144         of a hardcoded constant.
2145
2146 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
2147
2148         * method-to-ir.c (type_from_stack_type): Fix typo.
2149
2150 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
2151
2152         * mini-ia64.c (emit_move_return_value): Convert float return values to
2153         double.
2154
2155         * objects.cs: Add a new test.
2156         
2157         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
2158         VARARG methods to fix an assert later.
2159
2160         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
2161         end so it at least compiles.
2162
2163 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
2166
2167 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
2168
2169         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
2170         optimization to a new function (emit_optimized_ldloca_ir) and enable
2171         it for both ldloca and ldloca_s.
2172
2173 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
2174
2175         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
2176         gshared CASTCLASS code.
2177
2178         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
2179         amd64, where the libc stack unwinder encounters stack frames referring to
2180         native code in unmapped memory.
2181
2182         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
2183         sharing.
2184
2185         * generics.cs: Add new test.
2186
2187 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
2188
2189         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
2190         add a check that one of the ARM_FPU_ constants is defined.
2191
2192         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
2193         
2194         * mini-exceptions.c: Fix build on non-altstack platforms.
2195
2196         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
2197         sharing of vtypes.
2198
2199         * ir-emit.h: Add a comment to NEW_PCONST.
2200
2201         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
2202
2203         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
2204
2205         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
2206         after the changes to MonoJitDomainInfo.
2207
2208 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2209
2210         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
2211
2212 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2213
2214         * mini-ppc.c: Compiler warning fixes.
2215
2216 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2217
2218         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
2219         for pinvokes.
2220
2221 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2222
2223         * exceptions-ppc.c, mini-ppc.h: Compile
2224         mono_arch_handle_altstack_exception() on Darwin, too.
2225
2226 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2227
2228         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
2229         work on archs which don't have generic sharing implemented, only
2230         without the vtable_arg.
2231
2232 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2233
2234         * mini.c: Added comment explaining why delegate ctor icall
2235         wrappers are compiled.
2236
2237 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2238
2239         * mini.c: Don't produce trampolines to delegate ctor icall
2240         wrappers but compile them upfront.
2241
2242 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
2243
2244         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
2245         runtime-set function when going back to managed code. Currently this
2246         is used to set back the protection on the soft ovf pages and/or to
2247         throw the stack overflow exception that happened in unmanaged code.
2248
2249 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
2250
2251         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
2252         runtime-set function when going back to managed code. Currently this
2253         is used to set back the protection on the soft ovf pages and/or to
2254         throw the stack overflow exception that happened in unmanaged code.
2255
2256 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
2257
2258         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
2259         the support code for restoring stack protection after stack overflows
2260         that happen in unmanaged code. Don't set the exec permission on the
2261         soft overflow area.
2262
2263 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
2264
2265         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
2266         delegate->method_ptr is set. Fixes #428054.
2267
2268 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2269
2270         * tests.cs: Rename to ratests.cs.
2271
2272         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
2273         emit_get_rgctx_... functions.
2274
2275 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2276
2277         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
2278
2279 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2280
2281         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
2282         before asserting that method is sharable.
2283
2284 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2285
2286         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
2287         whether method needs a static RGCTX wrapper used instead of
2288         complex conditions.
2289
2290         * generic-sharing.c, mini.h: A few functions moved to
2291         metadata/generic-sharing.c.
2292
2293 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2294
2295         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
2296         Generic code sharing for value types, which essentially means
2297         treating value type methods like static methods.  The RGCTX is
2298         passed in the same way.
2299
2300 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2301
2302         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
2303         opcode when creating multi-dimensional arrays of open types.
2304
2305         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
2306         open generic types.
2307
2308         * generics.cs: Add a test.
2309
2310         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
2311
2312 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2313
2314         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
2315
2316         * mini.c (mini_method_compile): Set it when running under the debugger. 
2317
2318         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
2319         vreg optimization if the flag is set.
2320
2321         * driver.c (mono_main): Add --attach= option to pass options to
2322         the attach agent.
2323
2324         * mini.c (sigquit_signal_handler): Start the attach agent.
2325
2326         * ssapre.c: Disable this to save space since it is not yet ported to
2327         linear IR.
2328
2329         * regalloc2.c: Disable this to save space.
2330
2331         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
2332
2333 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
2334
2335         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
2336         the -v option useful again.
2337
2338 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2339
2340         * mini-amd64.c (mono_arch_output_basic_block): Add support for
2341         --break-at-bb.
2342
2343         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
2344         arrays of arrays. Fixes #428406.
2345
2346         * method-to-ir.c (mini_emit_castclass): Ditto.
2347
2348         * objects.cs: Add new test.
2349         
2350 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
2351
2352         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
2353         was wrong at it choked against target_type_is_incompatible for byref types.
2354
2355 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2356
2357         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
2358         places.
2359
2360 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
2361
2362         * mini-exceptions.c: update a few more exceptions-related counters.
2363
2364 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
2365
2366         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
2367         new functions to allocate from persistent mempools.
2368
2369 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2370
2371         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
2372         multiple register banks in the future.
2373
2374         * mini-codegen.c (mono_local_regalloc): Fix a warning.
2375
2376 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
2377
2378         * mini.c (type_to_eval_stack_type): Remove duplicated function.
2379
2380         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
2381
2382         * mini.h: Export type_to_eval_stack_type.
2383
2384         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
2385         is only ins->klass of byref types.
2386
2387 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
2390         (mini_emit_memcpy2): Ditto.
2391
2392         * mini-amd64.c: Fix a warning.
2393
2394 2008-09-21  Mark Probst  <mark.probst@gmail.com>
2395
2396         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
2397         linking.
2398
2399 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
2400
2401         * method-to-ir.c: Extract stloc micro-optimization to a
2402         function and apply it to all cases.
2403
2404 2008-09-19  Mark Probst  <mark.probst@gmail.com>
2405
2406         * method-to-ir.c: Don't fail generic code sharing in cases we
2407         already support.
2408
2409 2008-09-18  Mark Probst  <mark.probst@gmail.com>
2410
2411         * mini-ppc.c: Handle structs in tailcalls on Darwin.
2412
2413 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
2414
2415         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
2416         implementation.
2417
2418 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
2419
2420         * trace.c: make tracing more useful and correct, with per-thread
2421         id and indent info.
2422
2423 2008-09-15  Mark Probst  <mark.probst@gmail.com>
2424
2425         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
2426         doing a method call and the argument is an R4.
2427
2428 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
2429
2430         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
2431         generic methods.
2432
2433 2008-09-13  Mark Probst  <mark.probst@gmail.com>
2434
2435         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
2436
2437 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
2438
2439         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
2440         (MONO_JUMP_TABLE_FROM_INS): Ditto.
2441
2442 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2443
2444         * driver.c: Add a --agent argument (not supported yet) to load managed
2445         agent assemblies before loading the main assembly, similarly to how the
2446         Java VM handles agents.
2447
2448 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2449
2450         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
2451         function to do stack layout of local variables.
2452
2453 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2454
2455         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
2456         calculation.
2457
2458 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2459
2460         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
2461         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
2462         JIT if DISABLE_JIT is defined.
2463
2464         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
2465         defined.
2466
2467 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2468
2469         * iltests.il.in: Disable the fconv test on PPC (the result is
2470         undefined according to ECMA).
2471
2472 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2473
2474         * iltests.il.in: Enable tail call tests for PPC.
2475
2476         * mini.h: Add variable for storing incoming valuetype argument
2477         addresses for tail calls.
2478
2479         * mini-ppc.c: Implement valuetype arguments and return values for
2480         tailcalls on Linux.
2481
2482 2008-09-09  Mark Probst  <mark.probst@gmail.com>
2483
2484         * mini-ppc.c: Partially implement tail calls (struct arguments and
2485         return values not supported).
2486
2487         * method-to-ir.c: Enable tail calls on PPC.
2488
2489 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
2490
2491         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
2492         runtime-invoke wrappers to work around the problem of them getting
2493         assigned to a random class.
2494
2495         * aot-runtime.c (mono_aot_get_method): Ditto.
2496         
2497 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
2498
2499         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
2500         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
2501
2502 2008-09-07  Mark Probst  <mark.probst@gmail.com>
2503
2504         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
2505         until they're implemented properly.
2506
2507         * exceptions-ppc.c: Use arch-independent exception-handling code
2508         instead of custom one.
2509
2510         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
2511         for Linear IR.
2512
2513         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
2514
2515         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
2516         applies when __powerpc__ is defined.
2517
2518 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
2519
2520         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
2521         methods to their code to avoid computing the full name of wrappers and
2522         doing a lookup in a string hash table.
2523
2524 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2525
2526         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
2527         we identify bblocks before method_to_ir () is ran.
2528
2529         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
2530         Also avoid optimizing branches pointing to themselves.
2531
2532         * mini.c (mini_method_compile): Ditto. Fixes #422947.
2533
2534 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2535
2536         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
2537
2538 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2539
2540         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
2541         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
2542         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
2543         'buf'.
2544
2545         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
2546         jumped to the same entry in plt_jump_table.
2547
2548 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
2549
2550         * method-to-ir.c (initialize_array_data): Handle field with RVA from
2551         dynamic images.
2552
2553 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
2554
2555         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
2556         other assignment can be if converted. Saves 1.5% on corlib size and fixes
2557         #421807.
2558
2559 2008-08-29  Geoff Norton  <gnorton@novell.com>
2560
2561         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
2562         segment, and doesn't properly handle .space as .text.  Fixes
2563         AOT Mach/ARM
2564
2565 2008-08-29  Geoff Norton  <gnorton@novell.com>
2566
2567         * mini.c: Disable the mach exception handler when running on 
2568         ARM
2569
2570 2008-08-29  Geoff Norton  <gnorton@novell.com>
2571
2572         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
2573         globals on Darwin/ARM
2574
2575 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
2576
2577         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
2578         since too many things depend on it. Instead, call 
2579         mono_runtime_set_no_exec ().
2580         
2581         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
2582         the new JIT.
2583
2584         * aot-compiler.c: Add an 'asm-only' AOT option.
2585
2586         * mini.c: Avoid initializing the runtime when doing AOT compilation.
2587                 
2588         * aot-compiler.c (compile_method): Disable gshared support for now as it
2589         doesn't yet work.
2590
2591 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2592
2593         * mini-amd64.h : Fix a compiler warning.
2594
2595         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
2596           Changed to use a callback function to retrieve the unwind info.
2597           This avoids problems observed when code blocks were removed by
2598           unloading an app domain.
2599
2600         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
2601           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
2602           to work properly.
2603
2604         Contributed under MIT/X11 license.
2605
2606 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2607
2608         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
2609           case to keep the stack aligned to 8.
2610
2611         Contributed under MIT/X11 license.
2612
2613 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
2614
2615         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
2616         avoid repeated linear searches.
2617
2618 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
2619
2620         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
2621         methods it can't handle.
2622         
2623         * aot-compiler.c (add_method): Avoid adding a method twice.
2624         (add_wrappers): Add runtime invoke wrappers for all methods.
2625
2626         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
2627         function to create an aot-compatible version of this trampoline.
2628
2629         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
2630
2631 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
2632
2633         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
2634
2635         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
2636         with a generic sharing failure.
2637
2638         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
2639
2640         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
2641         CEE_RETHROW. Fixes #419634.
2642
2643         * mini.c (mono_method_to_ir): Ditto.
2644
2645         * exceptions.cs: Add a new test.
2646         
2647         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
2648         to mono_type_stack_size_internal () since some callers might not pass in
2649         an rgctx.
2650
2651         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
2652         instrument_prolog. Fixes #419878.
2653
2654         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
2655         doubles in soft float mode volatile.
2656
2657 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
2658
2659         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
2660
2661         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
2662         to handle soft float correctly.
2663
2664         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
2665         the fast path.
2666
2667         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
2668
2669         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
2670         to sp, since the generics catch code requires it.
2671
2672         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
2673         copying.
2674
2675         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
2676         mono_arch_emit_imt_argument ().
2677
2678         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
2679
2680         * mini-arm.c tramp-arm.c: Generic sharing updates.
2681
2682 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
2683
2684         * mini-arm.c: Fix the arm build.
2685
2686         * generic-sharing.c (mini_type_get_underlying_type): New helper function
2687         handling enums, generic instances and generic sharing.
2688         (mini_type_stack_size_full): Ditto.
2689
2690         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
2691         
2692         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
2693
2694         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
2695
2696         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
2697         trampolines.
2698
2699         * mini-arm.c: Various small generic sharing changes.
2700
2701         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
2702         this for x86.
2703         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
2704         custom code.
2705
2706         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
2707         helper function to return a generic class init trampoline.
2708
2709         * method-to-ir.c mini.c: Use it.
2710         
2711         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
2712         arch-specfic function to return a generic class init trampoline.
2713
2714         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
2715         the GENERIC_CLASS_INIT custom code.
2716
2717         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
2718         a fatal error, not a sharing failure.
2719
2720         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
2721         needed.
2722
2723         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
2724         trampoline argument from MONO_ARCH_VTABLE_REG.
2725
2726         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2727         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2728         argument, and pass the vtable in VTABLE_REG.
2729
2730         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2731         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2732         argument, and pass the vtable in VTABLE_REG.
2733         (mono_arch_create_trampoline_code_full): Remove some special casing for
2734         the rgctx fetch trampoline.
2735
2736         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
2737         Fixes #419273.
2738
2739         * iltests.il: Add a test for it.
2740
2741 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
2742
2743         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
2744
2745         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
2746         no longer needed.
2747
2748         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
2749         use mono_jit_info_table_find () to avoid recursion.
2750         (mono_delegate_trampoline): Add a sync wrapper here.
2751
2752         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
2753         here.
2754
2755         * mini.c (mono_method_to_ir): Ditto.
2756         
2757         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
2758         add_sync_wrapper argument. Don't add a sync wrapper here.
2759         (mono_create_jump_trampoline): Don't add a sync wrapper here.
2760
2761         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
2762         
2763 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2764
2765         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
2766           of nonvolatile registers back from MonoContext to CONTEXT.
2767
2768         Contributed under MIT/X11 license.
2769
2770 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2771
2772         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
2773           arguments on Winx64 there are only 4 argument registers.  For this
2774           logic to work the last argument must be pulled from the stack.  
2775
2776         Contributed under MIT/X11 license.
2777
2778 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
2779
2780         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2781
2782         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
2783         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
2784         encode/decode_method_ref ().
2785
2786         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
2787
2788         * aot-runtime.c (decode_patch): Ditto.  
2789
2790         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
2791         MONO_PATCH_INFO_METHOD.
2792
2793         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
2794         MonoGenericJitInfo.
2795
2796         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
2797         MonoGenericJitInfo.
2798
2799         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
2800
2801         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
2802         one from the caller.
2803
2804         * aot-runtime.c (decode_generic_inst): New function to decode and
2805         return a interned generic inst.
2806         (decode_klass_ref): Use it.
2807         (decode_method_ref): Ditto.
2808
2809         * aot-compiler.c (emit_exception_debug_info): Save 
2810         jinfo->has_generic_jit_info too.
2811
2812 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2813
2814         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
2815
2816         * iltests.il.in: Add a test for fconv_to_i.
2817
2818         * liveness.c: Disable the liveness2 pass for now to save space.
2819
2820         * regalloc2.c: Include mempool-internals.h to fix warnings.
2821
2822         * aot-compiler.c (encode_method_ref): Encode the context of generic
2823         instance methods.
2824
2825         * aot-runtime.c (decode_method_ref): Inflate generic methods using
2826         the context saved in the aot file.
2827
2828         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2829
2830         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2831
2832         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
2833         volatile so they won't be optimized away.
2834
2835 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2836
2837         * ssa.c:
2838         * ssa2.c:
2839         * mini.c:
2840         * regalloc2.c:
2841         * dominators.c: Remove duplicated functions that now are in
2842         mempool-internals.h.
2843
2844 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2845
2846         * aot-compiler.c: Fix warnings.
2847
2848         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
2849
2850         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
2851
2852         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
2853         as the patch type.
2854
2855         * mini.c (mono_resolve_patch_target): Ditto.
2856         
2857         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
2858         (encode_klass_ref): Add support for encoding VARs/MVARs.
2859
2860         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
2861
2862         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
2863         the handling of the got entries into a separate 'decode_got_entry' function.
2864         Add support for RGCTX_FETCH.
2865
2866         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
2867         clobbered by the trampoline code.
2868
2869         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
2870         not clobbered by the indirect calling code.
2871
2872 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2873
2874         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
2875         to fix the build.
2876
2877 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2878
2879         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
2880         signature using the compilation mempool otherwise we would leak it.
2881
2882 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2883
2884         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
2885         mono_emit_abs_call ().
2886
2887         * patch-info.h: Add GENERIC_CLASS_INIT.
2888
2889         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
2890
2891         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
2892         as their target as a near call.
2893
2894         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
2895         ABS handling code.
2896         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
2897
2898         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
2899         call to a runtime function described by a patch.
2900
2901         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
2902         mono_emit_abs_call, this has the advantage that the ABS handling code in
2903         mono_codegen () can handle them both, and can handle other stuff in the
2904         future without additional code.
2905
2906         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
2907         entry.
2908         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
2909         abs addresses.
2910
2911         * mini.h: Add missing bblock related prototypes.
2912
2913         * mini.h (MonoCompile): Remove unused reverse_inst_list and
2914         reverse_inst_list_len fields.
2915
2916         * mini.c: Refactor this file a bit by moving branch optimizations to 
2917         branch-opts.c.
2918
2919         * method-to-ir.c: Merge generic sharing changes missed earlier.
2920
2921         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
2922
2923         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
2924         shared patches. Process METHODCONST as a shared patch.
2925
2926         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
2927         as it crashes on the 2.0 mscorlib.
2928
2929         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
2930         to cause crashes.
2931         
2932         * aot-compiler.c: Use is_plt_patch () in a few additional places.
2933         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
2934         by IMT.
2935
2936         * aot-compiler.c: Reorganize the got handling code to be a bit more
2937         understandable.
2938
2939 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
2940
2941         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
2942         mono_patch_info_equals/hash, and use it to massively simplify
2943         get_plt_index ().
2944
2945         * mini.c (mono_patch_info_hash): Simplify this and add support for
2946         more patch types.
2947
2948         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
2949
2950         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
2951         handling code, since an offset is not enough to identify a trampoline.
2952
2953         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
2954
2955 2008-08-17  Mark Probst  <mark.probst@gmail.com>
2956
2957         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
2958
2959         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
2960
2961         * mini-ops.h: Argument and result types for OVF_CARRY ops.
2962
2963         * decompose.c: PPC decompositions for various ops.
2964
2965         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
2966
2967 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
2968
2969         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
2970         call the generic trampoline code using a call, instead of a jump, to
2971         remove some special casing from the generic trampoline code.
2972
2973         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
2974         (mono_codegen): Ditto.
2975
2976         * aot-compiler.c aot-runtime.c: Ditto.
2977
2978         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
2979
2980         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
2981         helper function to find the offset corresponding to a lazy fetch trampoline.
2982
2983         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
2984         when doing generic sharing.
2985
2986         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
2987         places.
2988         
2989         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
2990         mini-trampolines.c to be with the other trampoline creation functions.
2991
2992         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
2993         as it is equal to method->signature in most cases, add a 
2994         mono_emit_method_call_full variant which takes a signature and an imt
2995         argument as well.
2996
2997 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
2998
2999         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
3000         to this function, since it could be computed easily from the method 
3001         argument.
3002         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
3003         more.
3004
3005         * method-to-ir.c mini.c: Remove references to 
3006         compile_generic_method_wo_context.
3007
3008         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
3009         generic method calls.
3010         
3011         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
3012         dimensional non-szarrays.
3013
3014         * mini.c (mini_init): Register mono_array_new_1.
3015
3016         * jit-icalls.c (mono_array_new_1): New jit icall.
3017
3018         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
3019         pointing to the method.
3020
3021         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
3022         method addresses belonging to METHOD_JUMP patches in the 
3023         jump_target_got_slot_hash.
3024         (mono_aot_load_method): Ditto.
3025
3026         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
3027         METHOD_JUMP patches.
3028
3029         * mini.c (mini_create_jit_domain_info): New helper function which 
3030         initializes/frees domain->runtime_info.
3031         (mini_free_jit_domain_info): Ditto.
3032         (mini_init): Install the domain hook functions with the runtime.
3033
3034         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
3035         information maintained by the JIT.
3036
3037         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
3038         insertion into jump_table_hash into mono_codegen (), also implement proper
3039         locking.
3040
3041         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
3042         tail calls, it is already done by the aot code.
3043         
3044         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
3045         mechanism on amd64.
3046
3047         * iltests.il.in: Make the jmp test a bit more complex.
3048
3049         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
3050         generic instances which doesn't have a token.
3051
3052         * aot-runtime.c (decode_method_ref): Ditto.
3053         
3054         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
3055         can handle this case now.
3056         (handle_box): Ditto.
3057
3058 2008-08-15  Geoff Norton  <gnorton@novell.com>
3059
3060         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
3061         debugging check.
3062
3063 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
3064
3065         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
3066         calling generic methods.
3067
3068         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
3069
3070         * aot-runtime.c (decode_patch_info): Ditto.
3071
3072         * mini.c (mono_resolve_patch_target): Ditto.
3073         
3074         * patch-info.h: Add METHOD_RGCTX.
3075
3076         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
3077
3078 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
3079
3080         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
3081         arguments in registers.
3082
3083         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
3084         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
3085
3086         * mini.c (mini_method_compile): Abort aot compilation for generic
3087         methods if generic sharing is disabled.
3088         
3089         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
3090         an mrgctx.
3091
3092         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
3093         requiring an mrgctx.
3094
3095         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
3096         store instructions when converting a vcall to a normal call.
3097
3098         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
3099         mono_arch_find_jit_info.
3100
3101 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
3102
3103         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
3104         avoid calling mono_method_full_name () for every method even if the
3105         env var is not set.
3106         (check_inline_caller_method_name_limit): Ditto.
3107
3108 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
3109
3110         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
3111         assemblies in one run.
3112
3113         * aot-compiler.c (mono_compile_assembly): Only print out a count of
3114         skipped methods if it is not 0.
3115
3116         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
3117
3118 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
3119
3120         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
3121           MONO_ARCH_HAVE_UNWIND_TABLE.
3122
3123         Contributed under MIT/X11 license.
3124
3125 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
3126
3127         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
3128           from default optimizaton list on Winx64.
3129
3130         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
3131
3132         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
3133           the LMF from the MonoJitTlsData structure.
3134
3135         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
3136
3137         Contributed under MIT/X11 license.
3138
3139 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
3140
3141         * mini.c (sigsegv_signal_handler): Fix the build.
3142
3143         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
3144         assembly->aot_module.
3145
3146         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
3147         hash table. This simplifies and speeds up a lot of code, and fixes support
3148         for .netmodules.
3149
3150         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
3151         with the runtime.
3152
3153         * mini-exceptions.c: Ditto.
3154         
3155         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
3156         'native_offset' argument, since these are computed in the 
3157         mono_find_jit_info () function.
3158
3159         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
3160         is used by exceptions-ppc.c.
3161
3162         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
3163         mono_arch_find_jit_info ().
3164         
3165         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
3166         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
3167         generic code in mini-exceptions.c.
3168
3169 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
3170
3171         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
3172
3173         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
3174         
3175         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
3176         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
3177         called while holding the loader lock. Fixes #415608.
3178         (mono_aot_get_method_from_token_inner): Ditto.
3179
3180 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3181
3182         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
3183         to reduce differences between this and the generic implementation in
3184         mini-exceptions.c.
3185         (ves_icall_get_frame_info): Ditto.
3186
3187         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
3188
3189         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
3190         longer neccesarry.
3191
3192         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
3193         mono_arch_get_call_filter () and make it non-static, for consistency with the
3194         other architectures.
3195
3196 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
3197
3198         * mini.c:
3199         * local-propagation.c:
3200         * mini-x86.c: Correct the name of arch defines.
3201
3202 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3203
3204         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
3205         NO_EMULATE_LONG_SHIFT_OPS define.
3206
3207 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
3208
3209         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
3210         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
3211
3212         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
3213         MACH fixes. Merged from the 2.0 branch.
3214
3215         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
3216
3217         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
3218         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
3219
3220         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
3221
3222         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
3223         mono_marshal_get_native_wrapper () signature changes.
3224
3225 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3226
3227         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
3228         conversion bug under arm.
3229
3230 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
3231
3232         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
3233
3234         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
3235         with overflow checking.
3236
3237 2008-08-05  Marek Habersack  <mhabersack@novell.com>
3238
3239         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
3240         to the genmdesc.pl file
3241
3242 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
3243
3244         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
3245         arg_array in the soft-float versions of the LOAD/STORE macros.
3246
3247         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
3248         implementation.
3249
3250         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
3251
3252 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3253
3254         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
3255         a float HFA. Fixes #413621.
3256
3257 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
3258
3259         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
3260         frame_size to args_size. Fixes build.
3261
3262 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3263
3264         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
3265         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
3266
3267         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
3268         the stack are not unaligned. Fixes #413247.
3269         
3270 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3271
3272         * mini.c: update jitted methods performance counters.
3273
3274 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
3275
3276         * mini-exceptions.c: increase the exceptions thrown performance
3277         counter in mono_handle_exception ().
3278
3279 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
3280
3281         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
3282         can work with netmodules.
3283
3284 2008-07-28  Geoff Norton  <gnorton@novell.com>
3285
3286         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
3287         regression tests.
3288
3289 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3290
3291         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
3292         correct place.
3293
3294 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
3295
3296         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3297           The float param registers and other param registers must be the 
3298           same index on Windows x64.
3299
3300         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
3301           ArgValuetypeAddrInIReg argument case.  Setting the argument
3302           op to OP_VTARG_ADDR (OP_REGOFFSET)).
3303
3304         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
3305           variable computed above as the copy length for arguments of storage
3306           type ArgValuetypeAddrInIReg.
3307
3308         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
3309           ArgValuetypeAddrInIReg argument case.  This case will rely on
3310           mono_arch_emit_outarg_vt to emit the correct code later in the process.
3311
3312         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
3313           a 32 byte stack allocation for all calls.  We will omit the adjustment for
3314           jump and tail call instructoins as they do not follow the typical call behavior.
3315
3316         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
3317           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
3318           local variable and pass the local variable by reference to the called method.
3319
3320         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
3321           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
3322           of a struct is passed in a register it must be saved with the other
3323           volatile argument on the stack.
3324
3325         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
3326           frame pointer the stack adjustment value must be saved to the unwind 
3327           info structure.
3328
3329         Contributed under MIT/X11 license.
3330
3331 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3332
3333         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
3334         which got lost in the merge.
3335
3336 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3337
3338         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
3339         build.
3340
3341         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
3342         
3343         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
3344         icalls, since they won't be patched.
3345
3346         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
3347         different code sequence when running under valgrind to prevent some valgrind
3348         errors.
3349
3350         * iltests.il.in: Add new regression test.
3351
3352         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
3353         end with a throw.
3354
3355         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
3356         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
3357
3358         * iltests.il.in: Add new test.
3359
3360         * aot-compiler.c: Fix some warnings.
3361
3362         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
3363         Fixes #412494.
3364
3365 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3366
3367         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
3368         (mini_usage_jitdeveloper): Add a missing --wapi option.
3369
3370 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3371
3372         * mini-codegen.c: Simplify the is_fp macros.
3373         (free_up_ireg): Remove, use free_up_reg instead.
3374         (free_up_reg): Fix the fp case.
3375
3376 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3377
3378         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
3379         lowered earlier.
3380
3381         * exceptions-x86.c: Merge some changes which seemed to have got lost
3382         in the linear-ir merge.
3383
3384         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
3385
3386         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
3387         long vreg volatile even if the variable was already created.
3388
3389         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
3390         volatile variables.
3391
3392 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3393
3394         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
3395
3396         * mini.c (mono_jit_compile_method_inner): Add support for 
3397         MONO_EXCEPTION_BAD_IMAGE.
3398
3399         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
3400         mini_method_get_context () returns NULL. Fixes #356531.
3401
3402         * mini.c (mono_method_to_ir): Ditto.
3403         
3404         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
3405         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
3406
3407 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3408
3409         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
3410         in the LDFTN implementation.
3411
3412 2008-07-25  Mark Probst  <mark.probst@gmail.com>
3413
3414         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
3415         code, patch calls to icalls, too, even if they're not in the
3416         shared generic code hash.  Fixes #411962.
3417
3418 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3419
3420         * cpu-x86.md: Increase the length of the fcall opcodes.
3421
3422         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
3423         calls returning floats.
3424
3425         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
3426         on NEWARR.
3427         
3428         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
3429         missed earlier.
3430
3431         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
3432         into the domain->method_code_hash.
3433
3434         * aot-compiler.c: Fix win32 build.
3435
3436         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
3437         
3438         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
3439         gshared NEWARR implementation.
3440
3441         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
3442
3443         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
3444         can be used outside of method_to_ir.
3445
3446         * mini.h (MonoCompile): Add arg_types field.
3447
3448         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
3449         
3450         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
3451         the values of the local arg_array and param_types array.
3452
3453 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3454
3455         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
3456         got accesses might only get generated later when NEWOBJ is decomposed.
3457         
3458         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
3459         looking up the native code of the target method when a delegate is called
3460         for the first time.
3461
3462         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
3463         optimization.
3464
3465         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
3466
3467         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
3468         AOT work on platforms without a working dlsym implementation.
3469
3470         * mini.h: Bump AOT image format version.
3471         
3472 2008-07-24  Mark Probst  <mark.probst@gmail.com>
3473
3474         * mini-exceptions.c: Free a MonoType with
3475         mono_metadata_free_type() instead of g_free().
3476
3477         * aot-runtime.c: Free a MonoType.
3478
3479 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3480
3481         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
3482         optimization.
3483
3484         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
3485         fp stack on x86.
3486
3487 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
3488         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
3489         profiler hook.
3490
3491 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3492
3493         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
3494         NEWOBJ calls on valuetypes.
3495
3496         * iltests.il.in: Add new test.
3497
3498         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
3499
3500 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3501
3502         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
3503         is no longer needed.
3504
3505         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
3506         non register sized integer arguments.
3507         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
3508         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
3509         emit_memcpy2 ().
3510
3511         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
3512         CEE_MONO_RETOBJ.
3513         
3514         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
3515         two a binop with different sized arguments is emitted.
3516
3517         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
3518         instruction in the ins==NULL case.
3519
3520 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3521
3522         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
3523
3524         * mini-x86.c: Fix osx build.
3525
3526         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
3527         opcodes as well.
3528
3529         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
3530         instruction for non int sized variables.
3531
3532         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
3533         implementation.
3534
3535 2008-07-23  Robert Jordan  <robertj@gmx.net>
3536
3537         * method-to-ir.c: Fix MSVC build.
3538
3539 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3540
3541         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
3542         a non int sized type, widen it to an int since newer versions of gcc seem to
3543         generate code which needs this.
3544
3545         * ssa2.c abcremoval2.c: Fix warnings.
3546
3547         * *: Merge the Linear IR branch.
3548
3549         The original branch is at trunk/branches/vargaz/mini-linear-il, and
3550         the ChangeLog file there describes all the changes done over the years. 
3551         Further documentation can be found at www.mono-project.com/Linear_IL.
3552
3553 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3554
3555         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3556           The float param registers and other param registers must be the 
3557           same index on Windows x64.
3558
3559         Contributed under MIT/X11 license.
3560
3561 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
3562
3563         * mini.c: Make the previous fix GC safe.
3564
3565 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
3566
3567         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
3568
3569 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3570
3571         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
3572           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
3573           ArgValuetypeAddrInIReg instead.
3574
3575         Contributed under MIT/X11 license.
3576
3577 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
3578
3579         * mini-codegen.c (get_register_spilling): Fix a warning.
3580
3581 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
3582
3583         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
3584         for types which the initialization fails. Raises the provided exception
3585         at the right stop after cleanup.
3586
3587 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
3588
3589         * aot-compiler.c: Free most of the memory allocated during compilation.
3590
3591         * mini.c (mini_parse_debug_options): Fix a leak.
3592         
3593         * mini.c (mini_method_compile): Don't add the method to the jit info tables
3594         during aot compilation.
3595
3596 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
3597
3598         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
3599         it has too much register pressure.
3600
3601 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
3602
3603         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
3604
3605 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3606
3607         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3608         on x86.
3609
3610         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3611         on amd64 similar to the way it is done on arm.
3612
3613         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3614
3615         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
3616         consistency, normalize error messages, avoid loading aot-only modules in
3617         normal mode.
3618
3619         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
3620         for consistency.
3621
3622         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
3623
3624 2008-07-11  Martin Baulig  <martin@ximian.com>
3625
3626         * debug-debugger.h
3627         (MonoDebuggerInfo): Add `interruption_request'.
3628
3629 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3630
3631         * aot-compiler.c (emit_plt): Remove some dead code.
3632
3633         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
3634
3635         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
3636         return the plt info offset belonging to a given plt entry.
3637
3638         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
3639         mono_aot_get_plt_info_offset.
3640         
3641         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
3642         similar to the amd64 code by makeing jumps through a separate jump table 
3643         instead of embedding the jump addresses into the code.
3644
3645 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
3646
3647         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
3648         method.
3649
3650 2008-07-10  Martin Baulig  <martin@ximian.com>
3651
3652         * mini.c (mini_method_compile): Disable generics sharing when
3653         running in the debugger.
3654
3655 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3656
3657         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
3658
3659         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
3660         the local register allocator from running out of registers on x86 when 
3661         using aot.
3662
3663 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
3664
3665         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
3666         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
3667         C4146.
3668
3669         Contributed under MIT/X11 license.
3670
3671 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3672
3673         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
3674         speed up the assembler.
3675
3676 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3677
3678         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
3679         support.
3680
3681         * mini.c: Move the soft float handling macros a bit earlier, add 
3682         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
3683         place.
3684
3685         * mini.h: Add prototype for mono_arch_fixup_jinfo.
3686
3687         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
3688         read-only to help catch code allocation requests.
3689         
3690         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
3691         and turn it off when using --aot-only or when compiling with --aot=full.
3692
3693         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
3694         jump table for switches from the normal domain mempool, not the code
3695         manager.
3696
3697         * mini-trampolines.c (get_unbox_trampoline): New function to return an
3698         unbox trampoline which handles aot-only mode too.
3699
3700         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
3701         an AOTed unbox trampoline.
3702
3703         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
3704
3705 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3706
3707         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
3708         ""
3709
3710         Contributed under MIT/X11 license.
3711
3712 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3713
3714         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
3715           the unwind information for the method at the end of the allocated block.
3716           
3717         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
3718           MonoCompileArch to hold the unwind info for SEH on Winx64
3719         
3720         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
3721           frame pointer info for the method being compiled.
3722           
3723         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
3724           the call to mono_exception_from_token.
3725           
3726         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
3727           storing the method prolog information in a format that the Winx64 SEH can understand.  This
3728           information is stored a the end of the method block because it is all 32-bit offset based.
3729
3730         Contributed under MIT/X11 license.
3731
3732 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3733
3734         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
3735
3736         * wapihandles.c: Fix warnings.
3737
3738         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
3739         mode.
3740
3741         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
3742         mono_jit_compile_method in aot-only mode since that calls the type 
3743         initializer.
3744         
3745         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
3746         get_delegate_invoke_impl in aot-only mode.
3747
3748         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
3749
3750 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
3751
3752         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
3753
3754         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
3755         is on by default.
3756
3757         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
3758
3759         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
3760         init trampoline from the AOT file as well.
3761
3762         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
3763         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
3764         code.
3765
3766         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
3767         mono_init.
3768
3769         * exceptions-amd64.c: Add _full variants for the remaining exception code
3770         creation functions as well, allow emission of relocatable code, remove
3771         caching since that is now done by the caller.
3772
3773         * mini-exceptions.c: Add _full variants for the remaining exception code
3774         creation functions as well, add aot-only support.
3775
3776         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
3777         if we can determine a proper token for them.
3778         (add_wrappers): Add a few more wrappers.
3779         (emit_method_code): Remove some dead code.
3780         (emit_trampolines): Emit exception code too.
3781
3782         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
3783
3784         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
3785         mono_array_new_va which avoids varargs.
3786
3787         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
3788
3789         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
3790         mono_arch_create_specific_trampoline () in all places.
3791
3792         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
3793         a bit so it can be used for other things as well.
3794         
3795         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
3796         on demand as well.
3797
3798         * exceptions-amd64.c: Rename the caching from the exception code creation
3799         functions, it is done by the caller instead.
3800         
3801         * exceptions-amd64.c: Change the signature of the exception code creation 
3802         functions to allow the creation of relocatable code later.
3803
3804         * mini-exceptions.c: Add a set of functions to query the various 
3805         runtime-generated exception functions.
3806
3807         * mini.c mini-exceptions.c: Use the newly added functions instead of the
3808         mono_arch_.. () functions.
3809         
3810 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3811
3812         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
3813
3814         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
3815
3816         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
3817         (mini_get_vtable_trampoline): Ditto.
3818
3819         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
3820         code in the AOT case by returning the code size and a list of relocations to
3821         the caller.
3822
3823         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
3824
3825 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
3826
3827         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
3828           clean the stack.
3829
3830         Contributed under MIT/X11 license.
3831
3832 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3833
3834         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
3835         so the buffer size can be computed correctly. Fixes #404735.
3836
3837         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
3838         normally as cfg->debug_info is already freed.
3839
3840 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
3841
3842         * mini-amd64.c: For calls returning vtypes in registers, don't store
3843         the return address on the stack, instead allocate a separate local for
3844         it. Fixes #404729.
3845
3846 2008-07-05  Mark Probst  <mark.probst@gmail.com>
3847
3848         * mini-trampolines.c, mini.h: Add an argument to
3849         mono_create_jit_trampoline_in_domain() for turning off the adding
3850         of the sync wrapper.
3851
3852         * mini.c: Use the JIT trampoline without sync instead of
3853         ldftn_nosync in static RGCTX invoke wrappers so that the call can
3854         be patched.
3855
3856 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3857
3858         * driver.c: Turn on GSHARED optimization by default.
3859
3860 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
3861
3862         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
3863         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
3864
3865         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
3866         create a variant of the generic trampoline code callable from AOTed trampolines.
3867
3868         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
3869         trampoline code callable from AOTed trampolines.
3870
3871         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
3872
3873 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3874
3875         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
3876         pass-through manner.
3877
3878         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
3879         and don't fail sharing for them anymore.
3880
3881         * mini-exceptions.c: Handle exceptions in shared generic methods.
3882
3883         * generic-sharing.c: When checking the context of a generic
3884         method, also check its class's context.  Don't treat wrappers as
3885         sharable.
3886
3887         * mini-trampolines.c: Some code factored out to
3888         metadata/generic-sharing.c.  Handle the MRGCTX case.
3889
3890         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
3891         we must deal with the method being of another instantiation of the
3892         class.  Add static rgctx invoke wrappers to generic methods.
3893
3894 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3895
3896         * mini.c: Provide all jit infos of generic shared methods with a
3897         generic jit info.
3898
3899         * mini-exceptions.c: Handle the new situation that a generic info
3900         might be available, but not info about the this/vtable/mrgctx
3901         variable.
3902
3903 2008-07-03  Mark Probst  <mark.probst@gmail.com>
3904
3905         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
3906         generic methods.
3907
3908 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
3909
3910         * dominators.c (check_dominance_frontier): Fix a warning.
3911
3912         * mini.h: Add some missing prototypes.
3913
3914         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
3915
3916         * driver.c (mono_jit_init_version): Correct the comments since the first
3917         argument should be the name of the root domain, not a filename.
3918
3919         * aot-runtime.c (make_writable): Error out if this is called while running
3920         with --aot-only.
3921         (load_aot_module): Ditto.
3922
3923         * aot-compiler.c: Really fix the computation of method indexes.
3924
3925         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
3926         optimizations as this is no longer called frequently.
3927
3928         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
3929         method and the invoke impl code and pass it to the delegate trampoline instead of
3930         just the delegate class.
3931
3932 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
3933
3934         * aot-compiler.c: Fixup the computation of method indexes.
3935         (add_wrappers): Create the base methods of the runtime invoke wrappers using
3936         the method builder infrastructure.
3937
3938         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
3939         has no header.
3940
3941         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
3942         mode, load the method right away instead of creating a trampoline.
3943
3944         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
3945
3946         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
3947         some checks a bit.
3948
3949 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
3950
3951         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
3952         (mono_aot_load_method): Use method_index instead of method->token.
3953
3954         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
3955         can handle icalls etc. properly.
3956
3957         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3958
3959         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
3960
3961         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
3962         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
3963         JIT_ICALL_ADDR patch type.
3964
3965         * patch-info.h: Add JIT_ICALL_ADDR patch type.
3966
3967         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
3968         request flag.
3969         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
3970
3971         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
3972
3973 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
3974
3975         * mini.c: Use domain->jit_code_hash_lock for controlling access to
3976         domain->jit_code_hash.
3977
3978 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
3979
3980         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
3981
3982 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
3983
3984         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
3985         get_this_arg_from_call, let it compute it when needed.
3986
3987         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
3988         gsctx from code only when needed.
3989
3990         * mini-trampolines.c (get_generic_context): Rename this to 
3991         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
3992         it can be called by the arch backends.
3993
3994         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
3995
3996 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
3997
3998         * driver.c (mono_main): Add experimental --aot-only command line option.
3999
4000         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
4001         set.
4002
4003 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4004
4005         * driver.c (DllMain): Remove mono_module_handle.
4006
4007         Contributed under MIT/X11 license.
4008
4009 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
4010
4011         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
4012         for emitting methods which are not in the source assembly. Detect and report
4013         failure of assembling+linking.
4014         
4015         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
4016
4017         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
4018
4019 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
4020
4021         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
4022
4023 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
4024
4025         * mini.h: Remove some obsolete prototypes.
4026
4027         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
4028
4029 2008-06-24  Mark Probst  <mark.probst@gmail.com>
4030
4031         * mini.c (get_object_generic_inst): Variable-sized arrays are not
4032         supported by Visual Studio, so use alloca().
4033
4034 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
4035
4036         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
4037         Fixes #402585.
4038
4039 2008-06-23  Mark Probst  <mark.probst@gmail.com>
4040
4041         * mini.c: Fail sharing of a generic method if it contains an open
4042         catch clause (because we don't pass MRGCTXs yet).
4043
4044 2008-06-23  Mark Probst  <mark.probst@gmail.com>
4045
4046         * mini.c: When compiling a method with generic sharing, insert the
4047         method instantiated with an all-Object generic context into the
4048         jit info table, instead of the context of the first instantiation
4049         of the method we happen to compile.
4050
4051 2008-06-18  Martin Baulig  <martin@ximian.com>
4052
4053         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
4054         `major_version' and `minor_version'.
4055
4056 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4057
4058         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
4059         mono_method_is_generic_sharable_impl() takes an additional
4060         argument specifying whether to treat type variables as reference
4061         types.
4062
4063 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4064
4065         * mini.h: Removed obsolete prototypes.
4066
4067 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4068
4069         * mini.c: Don't fail generic sharing for initobj and sizeof - we
4070         already handle them.
4071
4072 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4073
4074         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
4075         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
4076         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
4077         tramp-x86.c: Added a MonoGenericContext* argument to
4078         mono_arch_get_unbox_trampoline() so that it can call other
4079         functions which require it.
4080
4081 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4082
4083         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
4084         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
4085         mono_arch_get_this_arg_from_call() takes a
4086         MonoGenericSharingContext* as well.
4087
4088 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4089
4090         * mini.c: Factor out code for emitting unbox into emit_unbox() and
4091         implement generic sharing of unbox.
4092
4093 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4094
4095         * mini.c: Don't compute the vtable to determine whether a field is
4096         special static, because it might not work for open types.
4097
4098 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4099
4100         * mini.c: Removed the unused token_type and token_source arguments
4101         from get_runtime_generic_context_ptr().
4102
4103 2008-06-17  Marek Habersack  <mhabersack@novell.com>
4104
4105         * mini.c (ADD_BINOP): fix the build
4106
4107 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
4108
4109         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
4110         a widening op.
4111
4112 2008-06-16  Mark Probst  <mark.probst@gmail.com>
4113
4114         * mini.h: Removed class relations enum that's not used anymore.
4115
4116 2008-06-16  Mark Probst  <mark.probst@gmail.com>
4117
4118         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
4119
4120         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
4121         the lazy fetch trampoline access code.
4122
4123 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
4124
4125         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
4126
4127 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
4128
4129         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
4130
4131         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
4132
4133         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
4134
4135 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4136
4137         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
4138         intrinsics.
4139
4140         * mini-ops.h: Add MIN/MAX_UN opcodes.
4141
4142         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
4143         intrinsics.
4144
4145         * basic-math.cs: Add more min/max tests.
4146
4147         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
4148
4149 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4150
4151         * mini.c: Small fix in the prologue of emit_castclass.
4152
4153 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
4156
4157         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
4158         do not work even for unsigned types. Fixes #400014.
4159
4160         * basic-math.cs: Add regression tests for unsigned Min/Max.
4161
4162 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4163
4164         * mini.c: Added additional context_used argument to several
4165         functions, which will be needed for sharing generic methods.  Use
4166         GET_RGCTX macro wherever appropriate.  Declare only one
4167         context_used in mono_method_to_ir().
4168
4169 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4170
4171         * mini.c, generic-sharing.c: Removed generic class relations.
4172
4173         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
4174         functions due to MRGCTX changes.
4175
4176 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4177
4178         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
4179         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
4180         with calculated IMT.
4181
4182         * mini.c: Generic sharing of calls via generic interfaces.
4183
4184         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
4185         generic method with non-constant MonoGenericContext*.  Instead,
4186         the context is taken out of the method itself.
4187
4188 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4189
4190         * mini.c: Generic sharing of ldvirtftn.
4191
4192 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4193
4194         * mini.c: Generic sharing of ldftn.
4195
4196 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4197
4198         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
4199
4200 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4201
4202         * mini.c: Generic sharing of the special case of ldtoken followed
4203         by a call to GetTypeFromHandle.
4204
4205 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4206
4207         * mini.c: Generic sharing of box for nullable types.
4208
4209 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4210
4211         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
4212         are passed on the stack. Fixes #324807.
4213
4214 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
4215
4216         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
4217         for the ArgValuetypeAddrInIReg case.
4218
4219         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
4220         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
4221
4222         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
4223         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
4224         local variable and pass the local variable by reference to the called method.
4225           
4226         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
4227         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
4228
4229         Contributed under MIT/X11 license.
4230
4231 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
4232
4233         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
4234
4235         * debug-mini.c (mono_debug_print_vars): Release memory after printing
4236         everything.
4237
4238 2008-06-10  Martin Baulig  <martin@ximian.com>
4239
4240         * debug-mini.c
4241         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
4242
4243 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
4244
4245         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
4246         possible error when no arguments are passed.
4247
4248         Contributed under MIT/X11 license.
4249
4250 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
4251
4252         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
4253         where the file name is NULL.
4254
4255 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
4256
4257         * mini.c: Fix s390 build.
4258
4259 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
4260
4261         * trace.c (mono_trace_parse_options): Fix warnings.
4262
4263         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
4264
4265 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
4266
4267         * mini.c (remove_block_if_useless): Avoid printing the method name.
4268         
4269         * mini.c: Remove needless setting of ins->cil_code which is now done by 
4270         MONO_INST_NEW.
4271
4272         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
4273         LMF. Not yet used.
4274
4275         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
4276         translated code after it has been patched.
4277
4278 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
4279
4280         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
4281         avoid problems during code patching on SMP systems.
4282         (emit_call): Avoid adding a patch info which is already added by 
4283         emit_call_body.
4284         (mono_arch_emit_exceptions): Ditto.
4285
4286 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
4287
4288         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
4289         MONO_TYPE_ISSTRUCT already checks for it.
4290
4291 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
4292
4293         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
4294           structs with floats on Winx64 the float registers are not used.  
4295           The integer registers are always used..
4296         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
4297           only one register will be used and only if the size of the struct 
4298           is 1,2,4, or 8 bytes.
4299
4300         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
4301           to work for Winx64.
4302
4303         Contributed under MIT/X11 license.
4304
4305 2008-06-05  Martin Baulig  <martin@ximian.com>
4306
4307         * debug-debugger.c (debugger_lookup_class): Also call
4308         mono_class_setup_methods() here; we're only called from RTI.
4309
4310 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
4311
4312         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
4313         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
4314         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
4315         Post-process object files and add dtrace-generated object, if necessary.
4316
4317         Contributed under MIT/X11 license.
4318
4319 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4320
4321         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
4322         element class.
4323
4324         * mini.c: Generic sharing for unbox.any and castclass.
4325
4326 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4327
4328         * mini.c: Ignore tailcall prefix in shared generic code and when
4329         doing calls which require a vtable/rgctx argument.
4330
4331 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4332
4333         * mini.c: Don't free the JIT info.
4334
4335         * driver.c: Changes in the JIT info table testing code.
4336
4337 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
4338
4339         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
4340         interruption. Fix some warnings.
4341
4342         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
4343         interruption_checkpoint.
4344
4345 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
4346
4347         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
4348         from embedding applications.
4349
4350 2008-06-02  William Holmes  <billholmes54@gmail.com>
4351
4352         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
4353           reserving 32 bytes on the stack when making calls. 
4354
4355         Contributed under MIT/X11 license.
4356
4357 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
4358
4359         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
4360         the linear IL branch.
4361
4362         * driver.c: Print out more information for --version on arm.
4363
4364 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
4365
4366         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
4367         bb_exit instead, since out of line bblocks might not actually be emitted
4368         out-of-line.
4369         
4370         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
4371         maximum epilog size for out of line bblocks if tracing is enabled.
4372
4373         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
4374
4375 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
4376
4377         * arrays.cs: Regression tests for allocating arrays with negative sizes.
4378
4379 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
4380
4381         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
4382         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
4383         opcodes.
4384
4385 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
4386
4387         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
4388         the 'value' to store is a constant.
4389
4390         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
4391
4392         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
4393         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
4394
4395 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
4396
4397         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
4398         for accessing method->generic_container.
4399
4400 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
4401
4402         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
4403         
4404         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
4405
4406         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
4407
4408         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
4409         fails.
4410
4411 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
4412
4413         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
4414
4415         * mini.c: Handle the case when mono_class_vtable () fails.
4416
4417 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
4418         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
4419         the stat profiler.
4420
4421 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4422
4423         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
4424         together with domain sharing.
4425
4426 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4427
4428         * mini.c: Treat callvirts to final methods like non-virtual calls
4429         when doing generic sharing, i.e. look them up in the runtime
4430         generic context.
4431
4432 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4433
4434         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
4435         with computed types (for generic sharing).
4436
4437         * mini.c: Generic sharing for mkrefany and refanyval.
4438
4439 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
4440
4441         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
4442         possible.
4443
4444         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
4445         the generic sharing code.
4446         
4447         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
4448         when needed.
4449
4450 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4451
4452         * mini.h: Remove the declaration of mono_aot_init_vtable ().
4453
4454 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
4455
4456         * driver.c: updated copyright date
4457
4458 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4459
4460         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
4461         needed.
4462
4463 2008-05-19  Martin Baulig  <martin@ximian.com>
4464
4465         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
4466         pointing to the new `_mono_debug_using_mono_debugger' variable.
4467
4468         * driver.c
4469         (mono_main): Check mono_debug_using_mono_debugger() rather than
4470         the `MONO_INSIDE_MDB' environment variable to check whether we're
4471         inside the debugger.
4472
4473 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
4474
4475         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
4476         argument.
4477
4478 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4479
4480         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
4481
4482         * mini.c: Added mini_assembly_can_skip_verification. This
4483         function checks if the assembly requested to skip verification. 
4484         Fixes part of #387274.
4485
4486 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
4487
4488         * mini.c (mini_get_method): Disable the check for open generic classes when
4489         using generic sharing.
4490
4491         * generics.cs: Add a test for #387034.
4492
4493         * mini.c (mini_get_method): Check whenever the method class is an open generic
4494         type, and return NULL in that case, causing a verification error. Fixes
4495         #384123.
4496
4497 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4498
4499         * driver.c (mono_main): Revert r102623. The right
4500         thing to do is to enable the verifier under verifiable
4501         unless a --security flag was passed.
4502
4503         We need this non-trivial behavior for --verify-all otherwise
4504         mcs-compileall won't be able to use it. As it needs everything to
4505         be verified under validil.
4506
4507 2008-05-06  Martin Baulig  <martin@ximian.com>
4508
4509         Fix #383749.
4510
4511         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
4512         (mono_debugger_thread_cleanup): Likewise.
4513         (mono_debugger_extended_notification): Likewise.
4514
4515 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4516
4517         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
4518         against both inflated and non-inflated methods. We need to check against the
4519         generic definition for cases where the instantiated method is not visible.
4520         We need to check against the inflated types for cases where the instantiation
4521         changes any super type. This fixes #382986.
4522
4523         Note that this doesn't need to be applied to other parts of mono_method_to_ir
4524         that check for visibiliy as generic params only appears as the type subject
4525         of tokens on call opcodes. Field manipulation and ldftn must always
4526         target an exact type.
4527
4528 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4529
4530         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
4531         if no related --security flag is passed.
4532
4533 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4534
4535         * mini-arch.h: Prepare support for ppc64.
4536
4537         Contributed under MIT/X11 license.
4538
4539 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4540
4541         * aot-runtime.c: Prepare support for ppc64.
4542
4543         Contributed under MIT/X11 license.
4544
4545 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4546
4547         * mini-ops.h: Prepare support for ppc64.
4548
4549         Contributed under MIT/X11 license.
4550
4551 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
4552
4553         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
4554
4555         Contributed under MIT/X11 license.
4556
4557 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
4558
4559         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
4560         assemblies, since aot_name is not a full path, causing us to load MS.NET 
4561         assemblies on windows.
4562
4563 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
4564
4565         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
4566         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
4567         * main.c: Use UTF-8 encoded command line instead of Windows default code
4568         page on Windows to support Unicode.
4569         * driver.c (DllMain): New function for mixed-mode assembly support.
4570         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
4571         export __stdcall functions without decoration.
4572
4573         Contributed under MIT/X11 license.
4574
4575 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4576
4577         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
4578         saving it very early.
4579
4580 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4581
4582         * mini.h, mini.c: Lots of code for accessing the old RGCTX
4583         deleted.  The only way to access the new RGCTX is via the
4584         trampline.
4585
4586         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
4587         vtable instead of the RGCTX to static methods.
4588
4589         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
4590         accessing the new RGCTX.
4591
4592         * generic-sharing.c: There is no separation between self, type
4593         arguments and other types in the RGCTX anymore.
4594
4595 2008-04-25  Jonathan Chambers <joncham@gmail.com>
4596
4597         * mini-amd64.c (add_general): Remove previous stack adjustment.
4598         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
4599         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
4600         for 32 bytes of stack space reserved for all calls.
4601         
4602         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
4603         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
4604         adjustment.
4605         
4606         Code contributed under MIT/X11 license.
4607
4608 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
4609
4610         * mini.c (mini_method_verify): Only verify non-inflated methods, check
4611         against the root definition, peeling out method and type instantiations.
4612         Cache verify success results, code that fails verification is still
4613         checked multiple times.
4614
4615 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
4616
4617         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
4618
4619 2008-04-23  Jonathan Chambers <joncham@gmail.com>
4620
4621         * mini-amd64.c (add_general): Always increment stack on Win64.
4622         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
4623         on Win64.
4624         
4625         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
4626         stack based argument handling on Win64.
4627         
4628         Code contributed under MIT/X11 license.
4629
4630 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
4631
4632         * Makefile.am (version.h): Add support for git-svn.
4633
4634 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
4635
4636         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
4637         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
4638         avoiding allocations and libc functions which might deadlock.
4639         
4640         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
4641         'no-gdb-backtrace' option is set.
4642
4643         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
4644
4645         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
4646
4647 2008-04-21  Martin Baulig  <martin@ximian.com>
4648
4649         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
4650         and `get_lmf_addr'; `notification_address' is no longer a pointer.
4651
4652 2008-04-21  Martin Baulig  <martin@ximian.com>
4653
4654         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
4655         `thread_vtable', `event_handler_ptr' and `event_handler'.
4656
4657 2008-04-21  Martin Baulig  <martin@ximian.com>
4658
4659         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
4660         allows delayed initialization of the `executable_code_buffer' when
4661         attaching.
4662
4663 2008-04-21  Martin Baulig  <martin@ximian.com>
4664
4665         * mini.h (mono_debugger_create_notification_function): Removed.
4666         * tramp-*.c (mono_debugger_create_notification_function): Removed.
4667
4668         * mdb-debug-info64.s
4669         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4670
4671         * mdb-debug-info32.s
4672         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4673
4674         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
4675         currently only works on x86 and x86_64, so don't create it on ppc.
4676
4677 2008-04-21  Martin Baulig  <martin@ximian.com>
4678
4679         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
4680
4681         * mini.c
4682         (mini_method_compile): In the fp elimination check, check
4683         `debug_options.mdb_optimizations' in addition to
4684         mono_debug_using_mono_debugger().       
4685
4686         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
4687         disable some JIT optimizations which are only disabled when
4688         running inside the debugger.
4689         Added `--help-debug' option to describe the debugging options.
4690         (parse_debug_options): New static function to parse the `--debug'
4691         options, so we can easily add more stuff in future.
4692
4693 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
4694
4695         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
4696         the method has no body.
4697
4698 2008-04-19  Jonathan Chambers <joncham@gmail.com>
4699
4700         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
4701         assembly is not allowed in MSVC 64-bit compiler. 
4702         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
4703         as we get floating point exceptions everywhere.
4704         
4705         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
4706         correctly align arguments for call to throw_exception.
4707         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
4708         
4709         Code contributed under MIT/X11 license.
4710
4711 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
4712
4713         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
4714
4715 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
4716
4717         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
4718
4719         * mini-amd64.c (NEW_INS): Set cil_code.
4720
4721         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
4722         from mini-amd64.c so all debugger related logic is in one place.
4723
4724         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
4725         later won't have a random ip assigned to them.
4726
4727 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
4728
4729         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
4730         the arch specific function initializes code_size.
4731         (mono_create_delegate_trampoline): Ditto.
4732
4733         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
4734         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
4735         platforms.
4736
4737         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
4738         running under the debugger.
4739
4740         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
4741         debugger.
4742
4743         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
4744         debugger. Also move the disabling of optimizations here from driver.c.
4745         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
4746         debugger.
4747
4748         * mini.h (MonoCompile): Add a few new flags.
4749
4750 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
4751
4752         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
4753         so the cil_code field of created MonoInst's is properly set.
4754         (mini_select_instructions): Ditto.
4755
4756         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
4757         (MONO_INST_NEW_CALL): Ditto.
4758
4759         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
4760         in many places so the ins->cil_code field is properly initialized.
4761
4762         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
4763         place.
4764
4765 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
4766
4767         * mini.c (mini_method_compile): Print a different message when compiling a 
4768         shared method.
4769         
4770         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
4771         > 1.
4772
4773 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4774
4775         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
4776         SSE2 instructions.
4777
4778         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
4779         
4780 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4781
4782         * mini.c (handle_stack_args): Make this return void since its return value was
4783         never used. Also set cfg->unverifiable for invalid IL instead of calling
4784         G_BREAKPOINT ().
4785
4786 2008-04-10  Mark Probst  <mark.probst@gmail.com>
4787
4788         * mini.c: Make sure "this" is live in catch clauses with type
4789         variables in shared generic code.
4790
4791 2008-04-08  Mark Probst  <mark.probst@gmail.com>
4792
4793         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
4794         generic_class_is_reference_type() to ensure the proper behaviour
4795         when sharing generic code and the type in question is a type
4796         argument.
4797
4798 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4799
4800         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
4801         race conditions when printing thread dumps. Fixes #377738.
4802
4803 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
4804         
4805         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
4806         shows up when both MonoInst arguments can cause aliasig.
4807         There is likely no way in the current JIT to trigger this problem, but
4808         it showed up in the development of generics sharing, when in a new
4809         opcode both args of an OP_GROUP can be aliases (addresses of a local).
4810         When the generics sharing code will be committed, its tests will be
4811         valid also for this bug.
4812
4813 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4814
4815         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
4816         PATCH_INFO_METHOD.
4817
4818         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
4819         NULL.
4820
4821 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
4822
4823         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
4824         use a more detailed exception message for InvalidCastException.
4825
4826         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
4827
4828         * driver.c (mono_main): Add --debug=casts option to turn on better 
4829         InvalidCastException message details.
4830
4831         * mini.c (mini_get_debug_options): New helper function to return the address of
4832         the debug_options variable.
4833
4834         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
4835         the jit_tls TLS variable.
4836
4837         * mini.c (mono_jit_tls): New TLS variable.
4838
4839         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
4840         option is used.
4841
4842 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
4843
4844         * mini.h: Removed verifer related stuff. This code was moved to verify.c
4845
4846         * mini.c: Removed verifer related stuff, code moved to verify.c.
4847
4848         * driver.c: Using code from verify.c instead of mini.c.
4849
4850 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
4851
4852         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
4853         longer valid.
4854
4855 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
4856
4857         * mini.c (check_for_method_verify): Enabling verification of
4858         corlib if mono_verify_all is set. Bugs in the verifier preventing that
4859         have been fixed.
4860
4861 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
4862
4863         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
4864         caller saved registers as well.
4865         
4866         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
4867         saved registers as well.
4868
4869 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
4870
4871         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
4872
4873         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
4874         code.
4875
4876 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
4877
4878         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
4879         to get_call_info.
4880         (get_call_info): Take a gsctx argument instead of 'cfg'.
4881
4882 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
4883
4884         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
4885         mono_verify_all is set.
4886
4887         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
4888
4889         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
4890
4891 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
4892
4893         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
4894         an exception.
4895
4896         * driver.c mini.c mini.h: Add a --verify-all development option to test the
4897         verifier and the code generated by the compiler.
4898
4899 2008-03-25  Mark Probst  <mark.probst@gmail.com>
4900
4901         * mini.c: Generic sharing of the non-nullable case of the box
4902         instruction.
4903
4904 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
4905
4906         * inssel.brg: Fix the build.
4907
4908         * iltests.il.in: Add a test for lconv.ovf.u8.un.
4909
4910 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
4911
4912         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
4913         Array:Address. Fixes #372410.
4914
4915         * iltests.il.in: New tests for readonly prefix.
4916
4917 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
4918
4919         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
4920         mini-trampolines.c.
4921
4922         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
4923         mini-exceptions.c.
4924
4925         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
4926         
4927         * mini.c (mono_decompose_op_imm): New helper function.
4928
4929         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
4930         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
4931         return value.
4932
4933         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
4934         mono_arch_output_basic_block. Fix warnings.
4935
4936         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
4937         for now.
4938
4939 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
4940
4941         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
4942         since the extra frame is now detected automatically inside the loop.
4943
4944         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
4945         opts which are now in mono_peephole_ins ().
4946         
4947         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
4948
4949         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
4950         frames and skip duplicate managed-to-native frames. Fixes #367665.
4951
4952         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
4953         opts which are now in mono_peephole_ins ().
4954         (mono_arch_peephole_pass_2): Ditto.
4955
4956         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
4957
4958         * mini-codegen.c (mono_peephole_ins): New helper function containing the
4959         arch independent peephole optimizations.
4960
4961         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
4962         opts which are now in mono_peephole_ins ().
4963
4964         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
4965         
4966         * mini-s390.c (mono_arch_output_basic_block): Fix build.
4967
4968         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
4969         pattern.
4970
4971         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
4972         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
4973         opcode. 
4974
4975 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
4976
4977         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
4978         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
4979         return value.
4980
4981         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
4982         mono_arch_output_basic_block. Fix warnings.
4983
4984 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
4985
4986         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
4987         conv.ovf.u.un.
4988
4989 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
4990
4991         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
4992         conv.ovf.u.un.
4993
4994         * iltests.il: Add new tests.
4995
4996 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
4997
4998         * mini.c: Removed Windows version macros.
4999
5000 2008-03-20  Mark Probst  <mark.probst@gmail.com>
5001
5002         * generic-sharing.c: Put reflection types in the extensible part
5003         of the runtime generic context.
5004
5005         * mini.c: Generic sharing of the GetTypeHandle special case of the
5006         ldtoken instruction.
5007
5008 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
5009
5010         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
5011
5012         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
5013         
5014         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
5015         consistency with the other version on the linear IR branch.
5016
5017         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
5018
5019         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
5020
5021         * iltests.il.in: Add new tests.
5022
5023 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
5024
5025         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
5026
5027         * iltests.il.in: Add new tests.
5028
5029 2008-03-19  Mark Probst  <mark.probst@gmail.com>
5030
5031         * mini.c: Two variables with the same name were declared in
5032         nesting contexts and one wasn't initialized.  Fixed.
5033
5034 2008-03-19  Mark Probst  <mark.probst@gmail.com>
5035
5036         * mini.c: Generic sharing of the initobj instruction.
5037
5038 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
5039
5040         * mini.c: make the test to optimize ldtoken from typeof() more
5041         precise.
5042
5043 2008-03-18  Mark Probst  <mark.probst@gmail.com>
5044
5045         * mini.c: Generic sharing of the initobj instruction for reference
5046         types.
5047
5048 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5049
5050         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
5051         the mono_breakpoint_clean_code() code to perform bound checks.
5052
5053 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
5054
5055         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
5056         mono_arch_patch_callsite() to include the start of the managed method
5057         to be able to perform bound checks.
5058
5059 2008-03-17  Mark Probst  <mark.probst@gmail.com>
5060
5061         * mini.c: Generic sharing for the isinst instruction.
5062
5063 2008-03-17  Mark Probst  <mark.probst@gmail.com>
5064
5065         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
5066         inssel-long32-mips.brg: Added opcodes for doing indirect calls
5067         with the runtime generic context argument.
5068
5069         * mini.c: Share calls to several types of unsharable methods by
5070         putting the address of the method code in the runtime generic
5071         context and doing an indirect call.
5072
5073         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
5074         to switches.
5075
5076 2008-03-16  Mark Probst  <mark.probst@gmail.com>
5077
5078         * generic-sharing.c: Change due to a change in the runtime genric
5079         context API.
5080
5081 2008-03-15  Martin Baulig  <martin@ximian.com>
5082
5083         * tramp-x86.c
5084         (mono_arch_nullify_class_init_trampoline): Add call to
5085         mono_breakpoint_clean_code() to make things work when running
5086         inside the debugger.
5087
5088         * tramp-amd64.c
5089         (mono_arch_nullify_class_init_trampoline): Add call to
5090         mono_breakpoint_clean_code() to make things work when running
5091         inside the debugger.
5092
5093 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5094
5095         * inssel-long.brg (reg): Fix 64 bit build.
5096
5097 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5098
5099         * mini.c, mini.h: Share static generic code by passing it an
5100         implicit argument pointing to the runtime generic context.
5101
5102         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
5103         inssel-long32-mips.brg: New opcodes for calling shared static,
5104         which need to be passed the runtime generic context.
5105
5106         * mini-amd64.c, mini-x86.c: Save the runtime generic context
5107         argument on the stack in the prologue if needed.  New function for
5108         finding the runtime generic context argument from the registers
5109         saved by the trampoline.
5110
5111         * mini-amd64.h, mini-x86.h: Specify which register to use for the
5112         runtime generic context argument.
5113
5114         * tramp-amd64.c: Also restore the register used for the runtime
5115         generic context argument.
5116
5117         * mini-trampoline.c: Resolve shared static calls by consulting the
5118         runtime generic context via the new argument.
5119
5120         * generic-sharing.c: Add an argument to sharability-checking
5121         functions that specifies whether type variables should be treated
5122         as sharable type arguments.
5123
5124         * inssel-x86.brg: Removed a superfluous, buggy rule.
5125
5126         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
5127         to switches.
5128
5129 2008-03-14  Martin Baulig  <martin@ximian.com>
5130
5131         * debug-debugger.c (main_thread_handler): Call
5132         mono_runtime_run_main() without sending any notifications.
5133
5134         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
5135
5136 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5137
5138         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
5139
5140 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5141
5142         * tramp-x86.c: Fixed register restore offsets in the trampoline
5143         code for ECX and EDX.
5144
5145 2008-03-12  Geoff Norton  <gnorton@novell.com>
5146
5147         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
5148         different ucontext_t implementations.
5149         * exceptions-arm.c: Use the above defines to get exceptions working on 
5150         iPhone (based on a patch by Luke Howard lukeh@padl.com)
5151         * mini-arm.c: Implement iPhone icache support (based on a patch by
5152         Luke Howard lukeh@padl.com)
5153
5154 2008-03-12  Mark Probst  <mark.probst@gmail.com>
5155
5156         * mini.c: Enable generic sharing of calls to non-static
5157         non-interface non-generic non-value-type methods.
5158
5159         * mini-trampolines.c: Resolve calls from shared generic code.
5160
5161 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
5162
5163         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
5164
5165         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
5166
5167 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
5168
5169         * mini.c: some fixes for the AOT compiler.
5170
5171 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5172
5173         * cpu-amd64.md: Add clob:1 to some float opcodes.
5174
5175 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
5176
5177         * mini.h: Added MiniVerifierMode enumeration.
5178
5179         * mini.c: Added mini_verifier_set_mode to control
5180         the usage of the new verifier.
5181
5182         * mini.c (mono_method): Integrated the new verifier.
5183
5184         * driver.c: Extended --security option with validil and
5185         verifiable options to activate the new verifier.
5186
5187 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5188
5189         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
5190         optimization to ctors taking 0 or 2 arguments too.
5191
5192         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
5193         a bit.
5194
5195         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
5196
5197         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
5198
5199 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
5200
5201         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
5202         non-aot case as well.
5203
5204         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
5205
5206         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
5207         changes.
5208
5209         * aot-compiler.c (encode_patch): Ditto.
5210
5211         * mini.h (G_MININT32): Fix the definition of this.
5212
5213 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
5214
5215         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
5216
5217         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
5218
5219 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5220
5221         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
5222         methods returning vtypes in registers.
5223         (mono_arch_allocate_vars): Ditto.
5224
5225         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
5226
5227         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
5228
5229         * generics.cs: Add a test from the linear IR branch.
5230
5231         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
5232
5233         * mini.c (inline_method): Cache failed inline attempts.
5234
5235 2008-03-04  Mark Probst  <mark.probst@gmail.com>
5236
5237         * mini.c: For shared methods of generic classes put the location
5238         of "this" into the MonoGenericJitInfo.
5239
5240         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
5241         register out of a MonoContext by register number.  Add the generic
5242         sharing context as an argument to mono_arch_find_this_argument().
5243
5244         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5245         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
5246         for new arch function.
5247
5248         * mini-exception.c: Handle open exception clauses in shared
5249         generic code.
5250
5251         * mini-trampolines.c: Supply additional argument to
5252         mono_arch_find_this_argument().
5253
5254 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5255
5256         * Makefile.am (regtests): Run the bench.exe tests last.
5257
5258 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
5259
5260         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
5261         a bit.
5262
5263 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
5264
5265         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
5266         with MS.
5267
5268         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
5269         
5270         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
5271
5272         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
5273         whose class has no cctor.
5274
5275         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
5276
5277 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
5278
5279         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
5280         unverified.
5281
5282 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
5283
5284         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
5285         to be in sync with the code on the linear IR branch.
5286
5287         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
5288
5289         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
5290
5291 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
5292
5293         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
5294
5295         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
5296
5297         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
5298
5299         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
5300
5301         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
5302         
5303         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
5304         body.
5305
5306 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
5307
5308         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
5309         OP_LOADR4_MEMBASE emission.
5310
5311         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
5312         (mono_spillvar_offset_float): Ditto.
5313
5314         * mini-mips.c (mono_arch_emit_prolog): Ditto.
5315
5316         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
5317         emission.
5318
5319         * basic-long.cs: Add regression tests for them.
5320
5321         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
5322         use.
5323         (mono_arch_allocate_vars): Fix representation of single-precision float
5324         argument.
5325         (mono_arch_output_basic_block): Ditto.
5326
5327         * inssel-mips.brg: Ditto, remove duplicate items.
5328
5329         * mini-mips.c (emit_load_volatile_arguments): New function to handle
5330         arguments of tail calls as on other platforms.
5331         (mono_arch_output_basic_block): Handle tail calls.
5332
5333         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
5334         register.
5335
5336         * objects.cs (test_5_pass_static_struct): Add test for it.
5337
5338         Contributed under MIT/X11 license.
5339
5340 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
5341
5342         * Makefile.am: Use gmcs for compiling the regression tests.
5343
5344         * *.2.cs *.2.il: Rename to *.cs and *.il.
5345
5346 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
5347
5348         * regalloc.h: Make the vassign array smaller.
5349
5350         * mini.c (mini_method_compile): Remove an unused field in cfg.
5351
5352         * mini-codegen.c: Add a bunch of micro optimizations.
5353
5354 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
5355
5356         * regalloc.h: Remove some unused fields.
5357
5358 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
5359
5360         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
5361
5362         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
5363
5364 2008-02-22  Mark Probst  <mark.probst@gmail.com>
5365
5366         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
5367
5368         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
5369         trampoline: Fetch an entry from the runtime generic context.  If
5370         it's NULL, jump to the actual trampoline to fill the runtime
5371         generic context.  Otherwise, return it.
5372
5373         * mini.c: Call the lazy fetch trampoline to get entries out of the
5374         runtime generic context.
5375
5376         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
5377         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
5378         tramp-sparc.c: Stubs for the lazy fetch trampoline.
5379
5380 2008-02-21  Mark Probst  <mark.probst@gmail.com>
5381
5382         * mini.c: Fetch data out of the extensible part of the runtime
5383         generic context instead of calling a helper function.
5384
5385         * generic-sharing.c: Some functions moved into
5386         metadata/generic-sharing.c.  Helper function for fetching other
5387         types now checks and asserts against extensible rgctx (just for
5388         debugging purposes - the helper function isn't called anymore
5389         unless for debugging).
5390
5391 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5392
5393         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
5394         for tail calls up to the point that the tests in iltests.exe run. Also add a
5395         dummy CKFINITE implementation.
5396         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
5397         needed for trampoline LMF frames.
5398
5399         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
5400         trampoline LMF frames.
5401
5402 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
5403
5404         * mini.c (inline_method): clean any pending loader error when inlining fail.
5405         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
5406
5407 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5408
5409         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
5410
5411         * aot-runtime.c (decode_patch_info): Ditto.
5412
5413         * mini.c (mono_resolve_patch_target): Ditto.
5414         
5415         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
5416         icall wrappers.
5417
5418         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
5419         
5420         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
5421         if it references an icall address.
5422
5423 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
5424
5425         * cpu-s390x.md: Remove some more unused opcodes.
5426         
5427         * cpu-s390x.md: Remove some unused opcodes.
5428
5429         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
5430         mono_op_imm_to_op ().
5431
5432         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
5433         instead of a switch statement.
5434         
5435         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
5436         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
5437
5438         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
5439         
5440         * mini-codegen.c: Remove unused mono_regstate2_... functions.
5441
5442         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
5443         -1.
5444
5445 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
5446
5447         * driver.c (mono_main): Improve error reporting when an assembly cannot be
5448         opened. Fixes #362607.
5449
5450         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
5451
5452         * iltests.il.in: Add a test for static methods in interfaces.
5453
5454 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
5455
5456         * genmdesc.c (build_table): Fix a crash on older glib versions.
5457
5458         * cpu-sparc.md: Remove some unused opcodes.
5459         
5460         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
5461         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
5462
5463         * cpu-amd64.md: Remove some unused opcodes.
5464
5465         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
5466         like the other opcodes.
5467
5468 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
5469
5470         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
5471
5472         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
5473
5474         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
5475         variables 'cfg' instead of 'm' for consistency.
5476
5477         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
5478
5479         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
5480         argument holding the vtype return address, to avoid the ambigious use of
5481         cfg->ret for this purpose.
5482
5483         * mini.c (NEW_RETLOADA): Use vret_addr if set.
5484
5485         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
5486         
5487         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
5488         new mono_print_ins () function which only takes one argument.
5489
5490 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
5491
5492         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
5493         macro arguments.
5494
5495 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
5496
5497         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
5498
5499         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
5500
5501         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
5502         opcodes and other small changes.
5503
5504         * mini-ops.h: Add some new opcodes from the linear IR branch.
5505
5506         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
5507
5508         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
5509         opcodes, use the REG_MEMBASE opcodes instead.
5510         
5511         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
5512         opcodes, use the REG_MEMBASE opcodes instead.
5513         
5514         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
5515         linear IR branch.
5516
5517         * mini.c (mono_op_imm_to_op): New helper function.
5518
5519         * mini-ops.h: Add some opcodes from linear IR branch.
5520
5521 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
5522
5523         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
5524         <tsv@solvo.ru>.
5525
5526 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
5527
5528         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
5529         OP_ICONV_TO_R4/R8.
5530
5531         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
5532
5533 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
5534
5535         * aot-compiler.c (emit_method_code): Add an assert.
5536
5537         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
5538         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
5539         methods.
5540
5541 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
5542
5543         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
5544         some load/store opcodes so they are consistent. 
5545         (mono_arch_emit_prolog): Simplify some code.
5546
5547         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
5548
5549         * objects.cs: Add tests for large argument offsets on ARM.
5550
5551         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
5552         stack offsets. Fixes #359651.
5553
5554         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
5555
5556         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
5557
5558         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
5559
5560         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
5561
5562         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
5563
5564         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
5565         rid of CEE_CONV_R_UN.
5566
5567         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
5568
5569 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
5570
5571         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
5572
5573         * mini.c (mono_normalize_opcodes): Add some more opcodes.
5574
5575         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
5576
5577         * cpu-amd64.md: Remove some unused opcodes.
5578
5579         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
5580
5581         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
5582
5583         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
5584         arch specific functions for its parts. Call the peephole pass after local
5585         regalloc so the prolog can compute a more accurate max_offset.
5586         
5587         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
5588         the corresponding OP_I/OP_L opcodes.
5589
5590         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
5591
5592         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
5593
5594 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5595
5596         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
5597         as they are handled in mini.c.
5598
5599         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
5600         
5601         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
5602         case since it is handled in mini.c.
5603
5604         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
5605
5606         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
5607
5608         * *.c: Use the new opcodes in the IR and back end code.
5609
5610         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
5611
5612         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
5613
5614 2008-02-06  Mark Probst  <mark.probst@gmail.com>
5615
5616         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
5617         an assert because it has a race condition.
5618
5619 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5620
5621         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
5622
5623         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
5624
5625         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
5626
5627         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
5628         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
5629
5630 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
5631
5632         * cpu-amd64.md (move): Correct the maximum size of move.
5633
5634 2008-02-05  Mark Probst  <mark.probst@gmail.com>
5635
5636         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
5637         the generic class init trampoline to return quickly if the class
5638         is already inited.
5639
5640 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
5641
5642         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
5643         issues where an 32 bit callsite cannot be patched by a 64 bit address.
5644
5645 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
5646
5647         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
5648         branch.
5649
5650 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
5651
5652         * objects.cs: Add some soft-float tests.
5653
5654         * mini.c: Fix a couple more soft-float issues.
5655
5656         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
5657
5658         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
5659         avoid a REX prefix.
5660
5661 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
5662
5663         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
5664         exception happens while compiling a virtual method.
5665
5666 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
5667
5668         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
5669         
5670         * mini-sparc.c: Fix build.
5671
5672         * mini-sparc.c (get_call_info): Add support for generic sharing.
5673
5674         * mini-exceptions.c: Add a FIXME.
5675
5676 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
5677
5678         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
5679         altstack handling code.
5680
5681         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
5682         
5683         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
5684
5685         * mini-s390.c: Add support for generic sharing.
5686
5687         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5688         Fix CAS on s390.
5689         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5690
5691         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
5692
5693         * mini-s390x.c: Add support for generic sharing.
5694         
5695         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5696         Fix CAS on ia64.
5697         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5698
5699         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
5700         can be used since it takes a 16 bit signed immediate.
5701
5702         * inssel-s390x.brg: Fix OP_SETRET.
5703
5704         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
5705
5706         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
5707
5708         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
5709
5710         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
5711
5712         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
5713         in one place.
5714
5715         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
5716         stuff.
5717
5718         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
5719         of the unused mono_arch_patch_delegate_trampoline stuff.
5720
5721 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
5722
5723         * basic-long.cs: Move the fp related tests to basic-float.cs.
5724
5725         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
5726
5727         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
5728
5729         * basic-calls.cs: Add a test for proper float argument passing.
5730
5731         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
5732         if the context corresponds to an exception received through a signal.
5733
5734         * exceptions.cs: Add a test for nullref handling at the start of a try
5735         clause.
5736
5737         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
5738
5739         * jit-icalls.c (mono_break): New JIT icall.
5740
5741         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
5742
5743         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
5744
5745 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * cpu-*.md: Get rid of unused opcodes.
5748
5749         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
5750
5751         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
5752         by all platforms.
5753
5754         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
5755         define.
5756
5757         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
5758         the arch independent trampoline code in mini-trampolines.c.
5759
5760         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
5761
5762         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
5763
5764         * mini-s390.h: Remove an unused define.
5765         
5766         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
5767         the arch independent trampoline code in mini-trampolines.c.
5768
5769         * mini-arm.c (mono_arch_emit_prolog): Fix build.
5770
5771 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
5772
5773         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
5774
5775         * mini-s390.c (mono_arch_emit_prolog): Fix build.
5776
5777         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
5778
5779         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
5780
5781         * cpu-amd64.md: Use smaller sizes for int opcodes.
5782
5783         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
5784
5785         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
5786         objects.cs.
5787
5788         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
5789         debugging.
5790
5791         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
5792         instead of though a pointer to save an indirection when accessing elements of
5793         the array.
5794
5795         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
5796         some typos.
5797         (NOT_IMPLEMENTED): New helper macro.
5798         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
5799         of a bb.
5800
5801         * *.c: Use the new helper macro.
5802
5803 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
5804
5805         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
5806
5807 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
5808
5809         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
5810         stack slots.
5811
5812 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
5813
5814         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
5815         profiling is enabled.
5816         
5817         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
5818         the end.
5819         (mono_arch_emit_prolog): Add more first bblock optimizations.
5820
5821         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
5822         in order if possible.
5823         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
5824         bblock, since the arguments are still in their original registers.
5825
5826         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
5827
5828 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
5829
5830         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
5831         as well.
5832
5833         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
5834         offset 0.
5835
5836         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
5837
5838         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
5839         process async exceptions received while in unmanaged code.
5840
5841         * mini.c (mini_init): Install a callback with the runtime which will be called
5842         when a thread receives an async exception while in unmanaged code.
5843
5844         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
5845
5846         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
5847
5848 2008-01-16  Wade Berrier  <wberrier@novell.com>
5849
5850         * cpu-g4.md:
5851         * cpu-arm.md:
5852         * cpu-s390x.md:
5853         fix build
5854
5855 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
5856
5857         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
5858         compilation with sun cc.
5859
5860         * cpu-*.md: Fix the build.
5861
5862         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
5863
5864         * mini-amd64.h: Add some comments to the MonoLMF structure.
5865
5866         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
5867         
5868         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
5869         in the LMF structure if possible. This saves two instructions in the
5870         managed->native wrappers.
5871
5872         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
5873
5874 2008-01-16  Mark Probst  <mark.probst@gmail.com>
5875
5876         * generic-sharing.c: New type argument lookup code which uses the
5877         runtime generic context template.
5878
5879 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
5880
5881         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
5882
5883         * mini-arm.c (add_general): Fix arm eabi parameter passing.
5884         (mono_arch_output_basic_block): Fix localloc implementation.
5885
5886         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
5887
5888         * mini-ia64.c (peephole_pass): Fix ia64 build.
5889
5890         * mini-amd64.c (peephole_pass): Fix a warning.
5891         
5892         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
5893         at a constant offset from sp/fp.
5894
5895         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
5896         instead of obtaining it from *lmf in the managed method case.
5897
5898 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
5899
5900         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
5901
5902 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
5903
5904         * mini.h (MonoInstList): New type.
5905         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
5906         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
5907         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
5908         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
5909         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
5910         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
5911         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
5912         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
5913         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
5914         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
5915         MONO_INST_LIST_FOR_EACH_ENTRY,
5916         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
5917         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
5918         mono_inst_list_first, mono_inst_list_last,
5919         mono_inst_list_next, mono_inst_list_prev): New instruction
5920         list handling interfaces.
5921         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
5922         list head 'ins_list'.
5923         (MonoInst): Replace next pointer with list head 'node'.
5924         (MonoCallInst): Make 'out_args' a MonoInstList.
5925         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
5926         (MonoCompile): Delete reverse_inst_list and
5927         reverse_inst_list_len.
5928         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
5929         mono_arch_lowering_pass, mono_arch_local_regalloc,
5930         mono_arch_output_basic_block, mono_arch_emit_prolog):
5931         Convert to new instruction lists.
5932         (insert_after_ins): Delete.
5933         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
5934         instruction lists.
5935         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
5936         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
5937         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
5938         mono_emulate_opcode, mono_emit_load_got_addr,
5939         inline_method, mono_method_to_ir, mono_print_bb_code,
5940         print_dfn, decompose_pass, nullify_basic_block,
5941         replace_out_block_in_code, remove_block_if_useless,
5942         merge_basic_blocks, move_basic_block_to_end,
5943         try_unsigned_compare, optimize_branches, mono_print_code,
5944         mini_select_instructions, remove_critical_edges): Likewise.
5945         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
5946         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
5947         mono_arch_output_basic_block, mono_arch_emit_prolog):
5948         Likewise.
5949         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
5950         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
5951         mono_arch_output_basic_block): Likewise.
5952         (inst_list_prepend, insert_after_ins): Delete.
5953         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
5954         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
5955         instruction lists.
5956         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
5957         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
5958         mono_arch_emit_prolog): Likewise.
5959         * cfold.c (mono_constant_fold): Likewise.
5960         * liveness.c (visit_bb, mono_analyze_liveness,
5961         optimize_initlocals): Likewise.
5962         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
5963         * graph.c (mono_draw_code_cfg): Likewise.
5964         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
5965         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
5966         mono_ssa_cprop): Likewise.
5967         * abcremoval (get_relations_from_previous_bb, process_block):
5968         Likewise.
5969         * local-propagation (mono_cprop_invalidate_values,
5970         mono_local_cprop_bb): Likewise.
5971         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
5972         peephole_pass, mono_arch_output_basic_block,
5973         mono_arch_emit_prolog): Likewise.
5974         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
5975         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
5976         mono_arch_emit_prolog): Likewise.
5977         (insert_after_ins): Delete.
5978         * aliasing.c (print_code_with_aliasing_information,
5979         mono_build_aliasing_information, mono_aliasing_deadce):
5980         Convert to new instruction lists.
5981         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
5982         peephole_pass, NEW_INS, mono_arch_lowering_pass,
5983         mono_arch_local_regalloc, mono_arch_output_basic_block):
5984         Likewise.
5985         (insert_after_ins): Delete.
5986         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
5987         peephole_pass, mono_arch_output_basic_block): Convert to
5988         new instruction lists.
5989         * mini-codegen (InstList, inst_list_prepend,
5990         insert_after_ins): Delete.
5991         (insert_before_ins, get_register_force_spilling,
5992         get_register_spilling, free_up_ireg, free_up_reg,
5993         create_copy_ins, create_spilled_store, alloc_int_reg,
5994         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
5995         to new instruction lists.
5996         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
5997         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
5998         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
5999         (insert_after_ins): Delete.
6000         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
6001         mono_arch_local_regalloc, mono_arch_output_basic_block,
6002         mono_arch_call_opcode): Convert to new instruction lists.
6003         (insert_after_ins): Delete.
6004         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
6005         peephole_pass, mono_arch_output_basic_block,
6006         mono_arch_emit_prolog): Convert to new instruction lists.
6007
6008 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
6009
6010         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
6011
6012         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
6013         Fixes #353182.
6014
6015         * Makefile.am (version.h): Make this work with non-bash shells.
6016
6017 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
6018
6019         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
6020
6021 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
6022
6023         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
6024         the InitializeArray optimization.
6025
6026 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
6027
6028         * mini.c driver.c: Don't include os/gc_wrapper.h.
6029
6030 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
6031
6032         * mini.c (print_jit_stats): Print GC statistics if available.
6033
6034 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
6035
6036         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
6037
6038 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
6039
6040         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
6041
6042 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
6043
6044         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
6045         
6046         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
6047
6048         * driver.c (mono_main): Ditto.
6049
6050 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
6051
6052         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
6053
6054         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
6055         in the vtable can't be encoded.
6056         (compile_method): Ditto.
6057
6058 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
6059
6060         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
6061         defined.
6062
6063         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
6064         lmf->rbp.
6065
6066         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
6067         the top LMF entry belongs to the current method.
6068
6069         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
6070
6071 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
6072
6073         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
6074         
6075         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
6076
6077         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
6078
6079         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
6080
6081         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
6082
6083         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
6084         implementation.
6085
6086         * basic-float.cs: Add an ulong->double cast test.
6087
6088 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
6089
6090         * mini.c (mono_method_to_ir): Fix a warning.
6091
6092 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
6093
6094         * mini-ops.h: Add OP_SWITCH.
6095
6096         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
6097         CEE_SWITCH in back-end code, use OP_SWITCH instead.
6098
6099 2007-12-11  Geoff Norton  <gnorton@novell.com>
6100
6101         * mini-s390x.c: Minor change to the MAX() define to allow
6102         it to compile with other gcc versions.
6103
6104 2007-12-11  Geoff Norton  <gnorton@novell.com>
6105
6106         * cpu-s390x.md:
6107         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
6108
6109 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6110
6111         exceptions-arm.c (mono_arch_get_restore_context): Restore
6112         the frame pointer.
6113
6114         exceptions-arm.c (throw_exception): Save the frame pointer.
6115         This is a partial fix for #323747. Only the client side is
6116         fixed.
6117
6118 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6119
6120         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
6121         was using an unrelated variable to log the class which
6122         needed the cctor to be called. This was crashing on arm.
6123
6124 2007-12-09  Robert Jordan  <robertj@gmx.net>
6125
6126         * mini-x86.c (mono_arch_emit_epilog):
6127         Consider all kinds of 64-bit types. Fixes #323114.
6128
6129 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
6130
6131         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
6132
6133 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6134
6135         * mini-amd64.c (peephole_pass): Add a missing instruction check.
6136
6137 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6138
6139         * mini.c: run type ctor before allocating an object, not only
6140         when running it's constructor method (fixes at least part of bug #342507).
6141
6142 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6143         
6144         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
6145         
6146         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
6147         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
6148         function.
6149
6150         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
6151         mono_generic_class_init_trampoline () the same as it is done with the other
6152         trampolines.
6153
6154         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
6155         aot-runtime.c aot-compiler.c: Implement AOT support.    
6156
6157 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6158
6159         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
6160         build for archs which don't have the vtable trampoline defined
6161         yet.
6162
6163 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
6164
6165         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
6166
6167         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
6168
6169         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
6170
6171         * tramp-<ARCH>.c: Use the new helper function.
6172
6173 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6174
6175         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
6176         trampoline call, which takes a vtable argument.
6177
6178         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
6179         OP_TRAMPCALL_VTABLEs like other calls.
6180
6181         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
6182         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
6183         call.  Implemented a support function which fetches the vtable
6184         from a register set.
6185
6186         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
6187         Implemented a generic class init trampoline, using the
6188         OP_TRAMPCALL_VTABLE opcode.
6189
6190         * mini.c: Implemented static field access when sharing generic
6191         code.  This implies initing the class using the new
6192         OP_TRAMPCALL_VTABLE call.
6193
6194 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6195
6196         * mini.c: Don't compile methods with sharing enabled if their
6197         classes are disabled for sharing.
6198
6199 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6200
6201         * inssel.brg: Add a missing sign extension to the GETCHR and array access
6202         opcodes. Fixes #346563.
6203
6204         * objects.cs: Add a new test.
6205
6206         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
6207
6208         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
6209         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
6210
6211 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6212
6213         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
6214
6215 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
6216
6217         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
6218         code stream.
6219
6220 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
6221
6222         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
6223
6224         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
6225         optimization in the AOT case.
6226         
6227 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
6228
6229         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
6230         
6231         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
6232
6233         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
6234
6235         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
6236
6237         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
6238         is created by the inlined delegate ctor.
6239
6240         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
6241
6242         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
6243
6244 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
6245
6246         * cpu-x86.md: Fix the length of ckfinite.
6247
6248 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
6249
6250         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
6251         
6252         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
6253         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
6254
6255         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
6256
6257         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
6258         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
6259
6260 2007-11-28  Martin Baulig  <martin@ximian.com>
6261
6262         * mini-x86.c
6263         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
6264         after creating the trampoline.
6265
6266 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
6267
6268         * aot-runtime.c (load_aot_module): Check runtime version if needed.
6269
6270         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
6271         the same version.
6272
6273         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
6274         instead of the calling method to help AOT.
6275
6276         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
6277
6278 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
6279
6280         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
6281         is defined.
6282
6283 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
6284
6285         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
6286         
6287         * aot-compiler.c (compile_method): Correct check for generic method definitions.
6288         (encode_method_ref): No need to handle generic method definitions specially.
6289
6290         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6291
6292         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
6293         decode_klass_info.
6294
6295         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
6296         encode_klass_info.
6297         (compile_method): Enable generic sharing.
6298
6299 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
6300
6301         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
6302         (mini_method_compile): Add preliminary support for AOTing shared generic code.
6303
6304         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
6305         generic code.
6306
6307         * mini-trampolines.c: Fix a warning.
6308
6309         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
6310         NEW_PCONST.
6311         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
6312         (generic_class_is_reference_type): Remove unused function.
6313
6314         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
6315         in the generic vtable trampoline case.
6316
6317         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
6318         
6319         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
6320         return an AOT method based on a vtable slot.
6321
6322         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
6323
6324         * mini.c (mini_get_vtable_trampoline): Export this.
6325
6326 2007-11-22  Martin Baulig  <martin@ximian.com>
6327
6328         * debug-debugger.h
6329         (MonoDebuggerInfo): Move `debugger_version' up.
6330
6331 2007-11-22  Martin Baulig  <martin@ximian.com>
6332
6333         * mini-amd64.c
6334         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
6335
6336         * mini-trampolines.c
6337         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
6338         after compiling the method.
6339
6340 2007-11-20  Martin Baulig  <martin@ximian.com>
6341
6342         * debug-mini.c
6343         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
6344         (mono_debugger_remove_breakpoint): Likewise.
6345         (mono_debugger_check_breakpoints): Likewise.
6346
6347         * debug-debugger.c: Implement the new breakpoint interface here.
6348
6349 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
6350
6351         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
6352         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
6353
6354         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
6355
6356 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
6357
6358         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
6359
6360         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
6361         mini.c.
6362
6363         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
6364         mini.c.
6365
6366         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
6367         returning a vtype in a register.
6368
6369         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
6370         here from the arch specific code.
6371
6372         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
6373         mini.c.
6374
6375         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
6376         (mono_arch_emit_prolog): Increment maximum prolog size.
6377
6378         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
6379         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
6380
6381         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
6382         MonoGenericSharingContext.
6383
6384         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
6385         MonoGenericSharingContext. Allocate memory from the cfg mempool.
6386
6387 2007-11-15  Mark Probst  <mark.probst@gmail.com>
6388
6389         * mini.c, mini.h, generic-sharing.c: Functions for producing code
6390         which extract fields out of the runtime generic context.  Full
6391         sharing of the NEWARR opcode.
6392
6393 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6394
6395         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
6396         --enable-minimal=ssa.
6397
6398 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
6399
6400         * mini-trampolines.c (mono_delegate_trampoline): Update after 
6401         mono_marshal_get_delegate_invoke () signature change.
6402
6403 2007-11-13  Mark Probst  <mark.probst@gmail.com>
6404
6405         * mini.c: Removed the shared context in favor of the generic
6406         sharing context.  Allocate the MonoJitInfo structure with room for
6407         the generic sharing context if it's needed.
6408
6409         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
6410         domain-internals.h now.
6411
6412         * mini-x86.c: Pass the generic sharing context to get_call_info ().
6413
6414         * generic-sharing.c: Several changes for working without a shared
6415         context and instead operating on open types instead.
6416
6417 2007-11-12  David S. Miller  <davem@davemloft.net>
6418
6419        * inssel-sparc.brg: Fix double instruction emit.
6420
6421 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
6422
6423         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
6424         Get/Set/Address methods.
6425         
6426         * mini.c debug-debugger.c mini-trampolines.c: Update after 
6427         mono_marshal_get_delegate_invoke signature change.
6428
6429 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6430
6431         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
6432         This can happens with dynamic methods. Fixes the other bug in #322722.
6433
6434 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6435
6436         * tramp-arm.c (mono_arch_patch_callsite): Support patching
6437         BX call sequence.
6438
6439         * mini-arm.c (arm_patch): Implement patching of BX call
6440         sequence. Fixes one of the bugs in #322722.
6441
6442 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
6443
6444        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
6445        under Linux.  We only need to flush every 32-byte cache line.    
6446
6447 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
6448
6449         * mini.c:
6450         move_basic_block_to_end: Add branches when needed, eventually creating
6451         a new BB.
6452         optimize_branches: added a parameter that tells if it's ok to create
6453         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
6454         and avoid calling move_basic_block_to_end when it's not ok.
6455         Fixes bug 318677.
6456
6457 2007-11-07  Mark Probst  <mark.probst@gmail.com>
6458
6459         * mini.c: Abort inlining call to InitializeArray if something
6460         looks wrong.  Let the icall handle it, which now has proper safety
6461         checks.
6462
6463 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6464
6465         * mini.c (mono_spill_call): add support for soft-float.
6466
6467         * mini.c (mono_method_to_ir): add support for soft-float
6468         to inlined functions that return float.
6469
6470         * mini.c (mono_method_to_ir): add support for soft-float
6471         to cee_stsfld opcode on float fields.
6472
6473 2007-11-05  Geoff Norton  <gnorton@novell.com>
6474
6475         * mini-x86.h: Fix the structure access for X86 Leopard.
6476
6477
6478 2007-11-05  Martin Baulig  <martin@ximian.com>
6479
6480         * mini-trampolines.c
6481         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
6482         after compiling the method to notify the debugger.
6483
6484 2007-11-05  Martin Baulig  <martin@ximian.com>
6485
6486         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
6487
6488 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
6489
6490         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
6491         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
6492
6493 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
6494
6495         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
6496         native-to-managed wrappers.
6497         
6498 2007-11-01  Geoff Norton  <gnorton@novell.com>
6499
6500         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
6501         members.
6502
6503 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
6504
6505         * mini.c, mini-x86.c: when getting back from unmanaged code
6506         to managed via a marshaled delegate we also need to set the
6507         right domain.
6508
6509 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
6510
6511         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
6512         for amd64.
6513
6514 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6515
6516         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
6517         let the debugger or other external agents to tell the JIT when
6518         a sw breakpoint has been inserted in the code that the JIT needs
6519         to be able to inspect.
6520
6521 2007-10-31  Martin Baulig  <martin@ximian.com>
6522
6523         * debug-debugger.h
6524         (MonoDebuggerInfo): Remove `runtime_class_init'.
6525
6526 2007-10-30  Martin Baulig  <martin@ximian.com>
6527
6528         * debug-mini.h
6529         (mono_debugger_thread_created): Added `MonoThread *' argument.
6530         (mono_debugger_extended_notification): New public method.
6531         (mono_debugger_trampoline_compiled): New public method.
6532
6533         * debug-mini.c
6534         (MonoDebuggerThreadInfo): Added `thread' and
6535         `extended_notifications' fields.
6536
6537         * debug-debugger.c
6538         (debugger_executable_code_buffer): New static variable.
6539
6540         * debug-debugger.h
6541         (MonoDebuggerInfo): Added `executable_code_buffer',
6542         `executable_code_buffer_size', `breakpoint_info_area',
6543         `breakpoint_table' and `breakpoint_table_size'.
6544
6545 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
6546
6547         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
6548         that IP  either is an unused value or the vtable pointer. IMT 
6549         calls use vtable + offset now. Reduced by almost half the size
6550         of IMT entries.
6551
6552 2007-10-26  Jonathan Chambers <joncham@gmail.com>
6553
6554         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
6555         defines to access param registers. Replace long usage with
6556         gsize as sizeof(long) != sizeof(void*) on Win64.
6557
6558         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
6559         on Win64. Fix intrinsic, use _AddressOfReturnAddress
6560         instead of non-existant _GetAddressOfReturnAddress.
6561
6562         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
6563         param registers. Save/restore %rdi and %rsi in MonoLMF.
6564
6565         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
6566         param registers. Modify (throw_exception) signature to take 
6567         %rdi and %rsi on Win64. 
6568
6569         Code is contributed under MIT/X11 license.
6570
6571 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6572
6573         * helpers.c: unlink debugging output files.
6574
6575 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
6576
6577         * mini.c: Move mono_create_ftnptr () to object.c.
6578
6579 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6580
6581         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
6582         optional. This function can now be used to disassemble code generated
6583         outside the JIT such as trampolines and IMT thunks.
6584
6585         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
6586
6587         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
6588         vtable pointer from a ldr instruction.
6589
6590         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
6591         new IMT call sequence.
6592
6593         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
6594         call sequence for interface invocations.
6595
6596         * mini-arm.c (mono_arch_emit_imt_argument): added, required
6597         for imt support. This function is empty since IMT on ARM requires no
6598         special handling on the IR side.
6599
6600         * mini-arm.c (mono_arch_find_imt_method): added, required for
6601         imt support.
6602
6603         * mini-arm.c (mono_arch_find_this_argument): added, required
6604         for imt support.
6605
6606         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
6607         a ldr instruction to load a value stored in the code stream.
6608
6609         * mini-arm.c (mono_arch_build_imt_thunk):added, required
6610         for imt support.
6611
6612
6613 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
6614
6615         * mini.c (mini_init): Install the jump trampoline callback.
6616
6617 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6618
6619         * mini-trampolines.c: handle synchronized methods with the common
6620         vtable trampoline (bug #335601).
6621
6622 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
6623
6624         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
6625
6626         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
6627         64 bit platforms.
6628
6629         * mini-ia64.h mini-ia64.c: Add support for IMT.
6630
6631         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
6632         prolog. Fixes #331958.
6633
6634 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
6635
6636         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
6637
6638 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6639
6640         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
6641         trampoline.
6642
6643 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6644
6645         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
6646         trampoline.
6647
6648 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
6649
6650         * mini-x86.c, mini-x86.h: x86 support for the common vtable
6651         trampoline.
6652
6653 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
6654
6655         * mini-trampolines.c: changed the magic rampoline to understand
6656         the common vtable trampoline method: the method to invoke is
6657         determined by the vtable displacement of the call.
6658
6659 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6660
6661         * mini.c, mini.h: register the common vtable trampoline if the
6662         architecture supports it.
6663
6664 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6665
6666         * cpu-amd64.md: use the correct max length for tls_get.
6667
6668 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
6669
6670         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
6671         CEE_STELEM_ANY. Fixes #333696.
6672
6673 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
6674
6675         * exceptions-x86.c: provide more graceful handling of the case where
6676         we followed a bogus function pointer from managed code (bug #332866).
6677
6678 2007-10-11  Mark Probst  <mark.probst@gmail.com>
6679
6680         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
6681         replaces the generic_shared flag and will carry more information
6682         in the future.
6683
6684         * generic-sharing.c: Added mini_type_stack_size() which allows
6685         allows open types if given a generic sharing context.
6686         mini_get_basic_type_from_generic() takes a
6687         MonoGenericSharingContext* instead of a MonoCompile* now.
6688
6689         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
6690         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
6691         mini-sparc.c, mini-x86.c: Trivial changes required by the two
6692         changes above.  Just passing arguments through to the right
6693         places.
6694
6695 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
6696
6697         * mini-arm.c: unify the call emission to emit_code_seq().
6698
6699 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
6700
6701         * tramp-arm.c: reduced the trampoline size.
6702
6703 2007-10-10  Mark Probst  <mark.probst@gmail.com>
6704
6705         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
6706         variable handling out of arch-specific code.
6707
6708 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
6709
6710         * mini-arm.c: implemented fast delegate dispatch.
6711
6712 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6713
6714         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
6715         that fp elimination is turned off if the space required by locals is too
6716         big. Fixes #331958.
6717
6718 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
6719
6720         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
6721         ARM to the new style trampoline.
6722
6723 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6724
6725         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
6726
6727         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
6728
6729 2007-10-09  Martin Baulig  <martin@ximian.com>
6730
6731         * debug-debugger.h
6732         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
6733         `field_info_offset_offset'.     
6734
6735 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
6736
6737         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
6738         removed more internal usage of the r11 register and made it available
6739         to the register allocator.
6740
6741 2007-10-08  Mark Probst  <mark.probst@gmail.com>
6742
6743         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
6744         when sharing generics and treat type variables as references.
6745
6746 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6747
6748         * mini-ppc.c: started removing the internal uses of register r11
6749         to eventually allow the register allocator to manage it as an
6750         additional available register.
6751
6752 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
6753
6754         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
6755
6756 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
6757
6758         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
6759         specific trampolines as they are not performance critical as a jump
6760         target (maybe align as before only for AOT code?). This saves about
6761         200 KB of native code on x86 for monodevelop startup.
6762
6763 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
6764
6765         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
6766         monodevelop startup.
6767
6768 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
6769
6770         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
6771
6772         * mini-sparc.h mini-sparc.c: Implement IMT support.
6773
6774         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
6775         its smaller and doesn't clobber sparc_g1.
6776
6777         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
6778
6779 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6780
6781         * mini-ppc.c: optimized the size of the IMT thunks a bit.
6782
6783 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
6784
6785         * mini-ppc.c: implemented fast delegate invocation.
6786
6787 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
6788
6789         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
6790
6791 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6792
6793         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
6794         code to the new style trampoline in preparation for IMT support.
6795
6796 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
6797
6798         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
6799         systems already. This also reduces the specific trampiline sizes and
6800         prepares for the use of r12 as the IMT identifier register.
6801
6802 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6803
6804         * mini-mips.h: endianess fix (simplified from a patch by
6805         Thomas Kunze <thommy@tabao.de>, bug #323737).
6806
6807 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6808
6809         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
6810         to access ucontext fields and enable netbsd support
6811         (partially from Magnus Henoch <mange@freemail.hu>).
6812
6813 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6814
6815         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
6816         use the preprocessor from the CPP env var if it is set.
6817
6818 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6819
6820         * mini-trampolines.c: fixed an assertion and moved it earlier in the
6821         code, before interface_offset gets used.
6822
6823 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
6824
6825         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
6826         mono_class_setup_vtable () before accessing klass->vtable.
6827
6828 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
6829
6830         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
6831         hackish.
6832
6833 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6834
6835         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
6836         IMT slots (this saves hundreds of KB of memory in programs like
6837         IronPython and Monodevelop).
6838
6839 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
6840
6841         * mini.c: print the delegate counter.
6842
6843 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
6844
6845         * mini-x86.c: make it easier to enable the debugging code for IMT
6846         slots.
6847
6848 2007-09-28  Martin Baulig  <martin@ximian.com>
6849
6850         * debug-debugger.h
6851         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
6852         `mono_method_klass_offset' and `mono_method_token_offset'.
6853
6854 2007-09-20  Mark Probst  <mark.probst@gmail.com>
6855
6856         * mini.c: First generics sharing implementation.  Can only share
6857         in very simple cases.  If sharing doesn't work it falls back to
6858         dedicated compilation.
6859
6860         * mini.h: Flag in MonoCompile to specify whether generic
6861         compilation is shared.  Flags enum for marking which generic inst
6862         of a context is used.  Prototypes for helper functions.
6863
6864         * generic-sharing.c: Helper functions for generic method sharing.
6865
6866         * optflags-def.h: Optimization flag (gshared) for enabling generic
6867         method sharing added.
6868
6869         * Makefile.am: generic-sharing.c added.
6870
6871 2007-09-19 Daniel Nauck <dna@mono-project.de>
6872
6873         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
6874
6875 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
6876         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
6877         fixes bug 325507.
6878
6879 2007-09-19  Martin Baulig  <martin@ximian.com>
6880
6881         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
6882         mono_debug_cleanup() is now part of mono_cleanup().
6883
6884 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
6885
6886         * driver.c (mono_main): Fix a warning.
6887
6888 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
6889
6890         * aot-compiler.c: Optimize various parts when processing large assemblies.
6891         Fixes ##325568.
6892
6893         * mini.c (mono_patch_info_hash): Improve hash function.
6894
6895 2007-09-14  Jonathan Chambers <joncham@gmail.com>
6896
6897         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
6898         
6899         Code is contributed under MIT/X11 license.
6900
6901 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6902
6903         * mini.c (mini_init): Fix a leak.
6904
6905         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
6906
6907 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
6908
6909         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
6910
6911 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6912
6913         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
6914
6915 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
6916
6917         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
6918         variance tests.
6919
6920         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
6921
6922         * mini.c (handle_alloc): Enable managed allocators in AOT code.
6923
6924         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
6925
6926         * aot-runtime.c (decode_patch_info): Ditto.
6927
6928 2007-09-12  Jonathan Chambers <joncham@gmail.com>
6929
6930         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
6931         static case. Cache delegates in architecture specific code, 
6932         based on number of parameters.
6933         
6934         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
6935         in architecture specific code, based on number of parameters.
6936         
6937         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
6938         caching happen in architecture specific code now.
6939         
6940         Code is contributed under MIT/X11 license.
6941
6942 2007-09-12  Jonathan Chambers <joncham@gmail.com>
6943
6944         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
6945         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
6946         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
6947
6948         Code is contributed under MIT/X11 license.
6949
6950 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
6951         * mini.c: (mono_thread_abort) Fixed bug #82416.
6952
6953 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
6954
6955         * mini.: hook the new managed GC allocation feature into the JIT.
6956
6957 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
6958
6959         * mini.c: implementation for the new runtime tls opcode.
6960
6961 2007-09-11  Martin Baulig  <martin@ximian.com>
6962
6963         * debug-debugger.h
6964         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
6965         `mono_method_inflated_offset'.
6966
6967 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
6968
6969         * driver.c mini.h mini.c: Add a new devel command line option for injecting
6970         async exceptions into a method.
6971
6972         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
6973         purpose of testing whenever the unwinder works at every instruction.
6974
6975 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
6976
6977         * mini.c: check accessibility of method used in ldftn (fixes
6978         bug #82635).
6979
6980 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
6981
6982         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
6983
6984         * inssel.brg: Fix a warning.
6985
6986 2007-09-03  Martin Baulig  <martin@ximian.com>
6987
6988         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
6989         now takes the `main_method' as argument.
6990
6991 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
6992
6993         * cpu-sparc.md (endfilter): Add missing src1:i argument.
6994
6995 2007-08-30  Jonathan Chambers <joncham@gmail.com>
6996
6997         * driver.c: include the cil-coff.h header on Windows.
6998         
6999         Code is contributed under MIT/X11 license.
7000
7001 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7002
7003         * mini.c, driver.c: don't include the cil-coff.h header.
7004
7005 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
7006
7007         * mini.c: flag places that needs fixes fo soft-float support.
7008
7009 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
7010
7011         * mini.h, inssel-float.brg: fix soft-float constant loads on big
7012         endian systems (partially from Dean Jenkins, bug #81924).
7013
7014 2007-08-28  Mark Probst  <mark.probst@gmail.com>
7015
7016         * mini.c (check_linkdemand): Remove embedded reference object in
7017         call to LinkDemandSecurityException.
7018         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
7019         with an IntPtr instead of a reference object.
7020
7021 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
7022
7023         * mini.c (handle_initobj): Handle alignment properly.
7024
7025         * inssel.brg (mini_emit_memset): Ditto. 
7026
7027         * inssel.brg (mini_emit_memcpy): Ditto. 
7028
7029         * inssel-sparc.brg: Ditto.              
7030
7031         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
7032
7033 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
7034
7035         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
7036         exceptions raised in unmanaged code. Fixes part of #82594.
7037
7038 2007-08-24  Mark Probst  <mark.probst@gmail.com>
7039
7040         * mini.c (mono_method_to_ir), declsec.c
7041         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
7042
7043 2007-08-22  Martin Baulig  <martin@ximian.com>
7044
7045         * debug-mini.h
7046         (MonoDebuggerThreadInfo): New typedef.
7047         (mono_debugger_thread_table): New global variable.
7048         (mono_debugger_thread_created): New public function.
7049         (mono_debugger_thread_cleanup): New public function.
7050
7051         * debug-debugger.h
7052         (MonoDebuggerInfo):
7053         - removed `get_current_thread' and `lookup_assembly'.
7054         - removed `data_table'.
7055         - added `thread_table'.
7056
7057         * mini.c
7058         (mono_thread_start_cb): Call mono_debugger_thread_created().
7059         (mono_thread_attach_cb): Likewise.
7060         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
7061         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
7062         initial domain.
7063
7064         * driver.c (mono_main): Move mono_debug_init() up, before calling
7065         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
7066
7067 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7068
7069         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
7070         together when passing several arguments of type double (gives a small
7071         speedup and saves a few bytes of generated code).
7072
7073 2007-08-20  Jb Evain  <jbevain@novell.com>
7074
7075         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
7076
7077 2007-08-20  Jb Evain  <jbevain@novell.com>
7078
7079         * mini.c (mono_method_to_ir): throw MethodAccessException
7080         and FieldAccessException instead of InvalidProgramException.
7081
7082 2007-08-20  Mark Probst  <mark.probst@gmail.com>
7083
7084         * mini.c: CoreCLR security checks.
7085
7086         * mini.h: Removed MonoSecurityMode (moved to
7087         metadata/security-manager.h) and mono_security_mode global var
7088         (replaced by set/get functions in security-manager.h).
7089
7090         * driver.c: Added "core-clr-test" security mode for testing.  Used
7091         set-function for setting security mode.
7092
7093 2007-08-17  Mark Probst  <mark.probst@gmail.com>
7094
7095         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
7096         the new jit_info_table.
7097
7098         * driver.c: Test code for the new jit_info_table (enabled by the
7099         define MONO_JIT_INFO_TABLE_TEST).
7100
7101 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
7102
7103         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
7104         detection of call <REG> instruction sequence. Fixes build on freebsd.
7105
7106 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
7107
7108         * mini-exceptions.c: Fix a warning.
7109
7110 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
7111
7112         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
7113         stack overflow handling code on amd64 too.
7114
7115         * mini-exceptions.c (mono_setup_altstack): Make this use 
7116         mono_thread_get_stack_bounds ().
7117
7118         * mini-x86.h: Disable sigaltstack on solaris x86.
7119
7120 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
7121
7122         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
7123
7124 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
7125
7126         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
7127
7128 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
7129
7130         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
7131
7132         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
7133
7134 2007-08-03  Neale Ferguson <neale@sinenomine.net>
7135
7136         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
7137         due to alignment.
7138
7139 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7140
7141         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
7142         to be emitted (bug #82281).
7143
7144 2007-08-01  Martin Baulig  <martin@ximian.com>
7145
7146         Merged the `debugger-dublin' branch.
7147
7148         * debug-debugger.h (MonoDebuggerInfo):
7149         Removed the `old_*' compatibility entries.
7150         Added `debugger_version' and `data_table'.
7151         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
7152         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
7153
7154         * debug-mini.c
7155         (MiniDebugMethodBreakpointInfo): Add `address_list'.
7156         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
7157         instead of a `gconstpointer'.
7158         (mono_debugger_insert_method_breakpoint): Return a
7159         `MonoDebugMethodAddressList *'.
7160
7161 2007-06-28  Martin Baulig  <martin@ximian.com>
7162
7163         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7164
7165 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
7166
7167         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
7168         __builtin_frame_address () since it is broken on older gcc versions.
7169
7170 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
7171
7172         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
7173         on the stack overflow handling and made the managed stack overflows
7174         catchable in most cases using soft guard pages.
7175         * exceptions-x86.c: added code to restore the protection in the soft
7176         guard pages at the end of exception handling.
7177
7178 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
7179
7180         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
7181
7182 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7183
7184         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
7185         exception handling.
7186
7187 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7188
7189         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
7190         signal handling support until it has been ported to the new mechanism.
7191         * mini.c: fixed stack overflow detection and use the new
7192         architecture code  to handle signals on the altstack.
7193
7194 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
7195
7196         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
7197         stack overflows on the alt stack.
7198
7199 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
7200
7201         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
7202         stack overflows on the alt stack.
7203
7204 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
7205
7206         * exceptions-ppc.c: cleanup preparing for altstack support.
7207
7208 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7209
7210         * exceptions-arm.c: cleanup preparing for altstack support.
7211
7212 2007-07-27  Mark Probst  <mark.probst@gmail.com>
7213
7214         * mini.c (print_jit_stats): Output hazard pointer stats.
7215
7216 2007-07-26  Mark Probst  <mark.probst@gmail.com>
7217
7218         * driver.c, mini.c: Replaced security mode flags with a single
7219         enum variable.
7220
7221 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7222
7223         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
7224
7225 2007-07-25  Mark Probst  <mark.probst@gmail.com>
7226
7227         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
7228         (which doesn't do anything yet) for activating Core CLR
7229         (Silverlight) security.
7230
7231 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
7232
7233         * mini-codegen.c: work around a possible gcc bug on arm.
7234
7235 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
7236
7237         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
7238         message for platforms that don't support AOT compilation.
7239
7240 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
7241
7242         * mini.h, mini.c, driver.c: temporary smcs hack.
7243
7244 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
7245
7246         * mini-arm.h, mini-arm.c: arm EABI fixes.
7247
7248 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
7249
7250         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
7251         case.
7252
7253         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
7254         trampolines taking a method argument.
7255
7256         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
7257
7258         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
7259         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
7260
7261         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
7262         JIT compilation throws an exception. Fixes #82050.
7263
7264 2007-07-19  Mark Probst  <mark.probst@gmail.com>
7265
7266         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
7267         with the MONO_EXCEPTION_ defines.
7268
7269 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
7270
7271         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
7272         #82117.
7273         
7274         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
7275         the cause of an assertion.
7276
7277 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
7278
7279         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
7280         removed.
7281
7282 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
7283
7284         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
7285         assert. Should fix #82103.
7286
7287 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
7288
7289         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
7290         here too. Fixes #82095.
7291
7292         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
7293         addresses.
7294
7295         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
7296
7297         * mini-amd64.h: Enable IMT for amd64.
7298         
7299         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
7300
7301 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
7302
7303         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
7304
7305 2007-07-12  Mark Probst  <mark.probst@gmail.com>
7306
7307         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
7308         as soon as check_linkdemand sets an exception_type.
7309
7310 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7311
7312         * mini-x86.c: fixed offsets for IMT call sequence.
7313         * mini-x86.h: enable IMT again.
7314
7315 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7316
7317         * trace.c (mono_trace_enter_method): Decode MonoType too.
7318
7319         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
7320
7321         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
7322
7323         * mini-amd64.c: Add preliminary IMT implementation.
7324         
7325 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
7326
7327         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
7328         understand the new IMT-base interface invocation (thanks to
7329         Daniel Nauck for the report and the remote debugging session).
7330
7331 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
7332
7333         * mini-x86.c: size and speed optimizations for the IMT bsearch.
7334
7335 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7336
7337         * Makefile.am (aotcheck): Make this actually use the AOTed code.
7338
7339 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
7340
7341         * mini-trampolines.c: implement AOT IMT support.
7342         * mini-x86.h: enable IMT support for wider testing.
7343
7344 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7345
7346         * inssel.brg (emit_imt_argument): Add aot support here.
7347
7348         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
7349
7350 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
7351
7352         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
7353         of the IMT implementation, partially from massi, with my
7354         implementation of the bsearch sequence. Disabled by default until
7355         the AOT code is implemented.
7356
7357 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7358
7359         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
7360
7361         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
7362
7363 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7364
7365         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
7366         arch-independent IMT JIT code from Massimiliano
7367         Mantione (massi@ximian.com) with small cleanups from me.
7368
7369 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7370
7371         * Makefile.am: fix svn invocation to get the svn revision to be
7372         independent of the local language (build fix).
7373
7374 2007-07-09  Mark Probst  <mark.probst@gmail.com>
7375
7376         * mini.c (inline_method): Reset cfg->exception_type if the
7377         inlining is aborted.  Fixes: 82049.
7378
7379 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
7380
7381         * mini.c: remove assert from exception handling code when exception_ptr
7382         is not set.
7383
7384 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7385
7386         * mini.c (mono_codegen): Add an assert.
7387
7388         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
7389         enter and leave code.
7390         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
7391
7392 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7393
7394         * mini-ppc.c: fixed memory corruption for localloc(0)
7395         (bug #81852).
7396
7397 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7398         
7399         * mini.c: Fix warnings.
7400
7401 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
7402
7403         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
7404         to emit better double->int conversions.
7405
7406 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7407
7408         * mini.c: the provided Min/Max optimizations are valid for unisgned
7409         ints.
7410
7411 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
7412
7413         * 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
7414
7415 2007-06-28  Miguel de Icaza  <miguel@novell.com>
7416
7417         * mini.c (mono_running_on_valgrind): Add support for reporting the
7418         method and  its boundaries to valgrind.
7419
7420 2007-06-28  Martin Baulig  <martin@ximian.com>
7421
7422         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7423
7424 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
7425
7426         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
7427
7428         * generic.2.cs: Add new test case.
7429
7430 2007-06-25  Martin Baulig  <martin@ximian.com>
7431
7432         Merged the `debugger-dublin' branch.
7433
7434         * debug-mini.c
7435         (mono_debugger_insert_method_breakpoint): New public method.
7436         (mono_debugger_remove_method_breakpoint): Likewise.
7437         (mono_debugger_check_breakpoints): New static method.
7438         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
7439
7440         * debug-debugger.h (MonoDebuggerInfo):
7441         Renamed (to keep backward compatibility in the vtable):
7442         `insert_breakpoint' -> `old_insert_breakpoint'.
7443         `remove_breakpoint' -> `old_remove_breakpoint'.
7444         `create_string' -> `old_create_string'.
7445         `lookup_class' -> `old_lookup_class'.
7446         `lookup_type' -> removed; changed into a dummy field.
7447         `lookup_assembly' -> `old_lookup_assembly'.
7448         Added (same functionality, but different signature):
7449         `create_string', `lookup_class', `lookup_assembly'
7450         Added new:
7451         `get_method_addr_or_bpt', `remove_method_breakpoint',
7452         `runtime_class_init'.
7453
7454         * debug-debugger.c: Merged the `debugger-dublin' branch.
7455
7456 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
7457
7458         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
7459         well.
7460         (peephole_pass): Likewise.
7461
7462 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
7463
7464         * driver.c: hopefully make setaffinity work also for ancient
7465         versions of linux.
7466
7467 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
7468
7469         * driver.c : win32 build fix.
7470
7471 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
7472
7473         * driver.c: check for the MONO_NO_SMP env var and bind to a single
7474         processor if it is set.
7475
7476 2007-06-21  Martin Baulig  <martin@ximian.com>
7477
7478         * debug-mini.h: New file.
7479
7480         * debug-mini.c
7481         (mono_debugger_insert_breakpoint_full): Moved here from
7482         ../metadata/mono-debug-debugger.c.
7483         (mono_debugger_remove_breakpoint): Likewise.
7484         (mono_debugger_breakpoint_callback): Likewise.
7485
7486 2007-06-15  Raja R Harinath  <rharinath@novell.com>
7487
7488         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7489         changes in MonoGenericClass.
7490
7491 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
7492
7493         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
7494
7495 2007-06-14  Raja R Harinath  <rharinath@novell.com>
7496
7497         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7498         removal of MonoGenericMethod.
7499
7500 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7501
7502         * mini-exceptions.c: hooks for the exception events profiling API.
7503
7504 2007-06-14  Randolph Chung  <tausq@debian.org>
7505
7506         * Makefile.ma: Add hppa target.
7507         * mini-arch.h: Include mini-hppa.h
7508         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
7509         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
7510         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7511
7512 2007-06-14  Randolph Chung  <tausq@debian.org>
7513
7514         * inssel.brg: Add rules for "chained" compare-branch operations so that
7515         a single compare op can affect multiple branches.  Adjust cost for
7516         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
7517         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
7518         cost for some rules so that they can more easily be overridden by
7519         per-arch rules (with fixes from lupus).
7520         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7521
7522 2007-06-13  Randolph Chung  <tausq@debian.org>
7523
7524         * mini-ops.h: Reorder branch ops so that they match the order of the
7525         corresponding CEE_* ops.  The code expects them this way.
7526         Add new ops for HPPA target.
7527         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7528
7529 2007-06-13  Randolph Chung  <tausq@debian.org>
7530
7531         * mini-exceptions.c: Handle cases where the stack grows towards
7532         larger addresses.
7533         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7534
7535 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7536
7537         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
7538         counter.
7539         * driver.c: explain where a non-matching corlib is found.
7540
7541 2007-06-13  Mark Probst  <mark.probst@gmail.com>
7542
7543         * mini.c (print_jit_stats): Output dynamic code allocation stats.
7544
7545 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
7546
7547         * mini-exceptions.c: Generate a method profile leave event during
7548         an exception to ensure that the profiler gets notified.
7549
7550 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
7551
7552         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
7553         branch.
7554
7555         * cpu-amd64.md: Add long_and/or/xor opcodes.
7556
7557 2007-06-06  Wade Berrier  <wberrier@novell.com>
7558
7559         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
7560         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
7561         length of instruction shr_imm (expected 8, got 10)
7562
7563 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
7564
7565         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
7566
7567 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7568
7569         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7570         MonoInternalHashTable again (fixed bug in the internal hash table
7571         code).
7572
7573 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7574
7575         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
7576         Have to figure out what makes it crash the SWF regression.
7577
7578 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
7579
7580         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
7581
7582 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7583
7584         * mini.c: optimize out the type check when storing null in a
7585         reference array.
7586
7587 2007-06-04  Mark Probst  <mark.probst@gmail.com>
7588
7589         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7590         MonoInternalHashTable.
7591
7592 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
7593
7594         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
7595         signed integer methods.
7596
7597 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7598
7599         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
7600         permanently since the current approach doesn't work.
7601
7602 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7603
7604         * inssel.brg (stmt): Only call delegate->invoke_impl if 
7605         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
7606
7607 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7608
7609         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
7610         the sreg2==rdx case.
7611         
7612         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
7613         account if it contains a rex prefix.
7614         (peephole_pass): Handle OP_FMOVE as well.
7615
7616 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7617
7618         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
7619         as it causes regressions.
7620
7621 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
7622
7623         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
7624         static case as well.
7625
7626         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
7627
7628         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7629         (mono_arch_get_this_arg_from_call): Ditto.
7630
7631         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
7632
7633         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
7634         invoke_impl field.
7635
7636         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7637         (mono_arch_get_this_arg_from_call): Ditto.
7638
7639         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
7640         
7641         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
7642         try to create optimized invoke code and use that for further invocations. 
7643         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
7644
7645         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
7646
7647 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
7648
7649         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
7650         sealed classes or methods.
7651         *devirtualization.cs: tests for the new optimization
7652
7653 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
7654
7655         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
7656         by the update_volatile () function.
7657
7658 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
7659
7660         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
7661         require it.
7662
7663         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
7664
7665 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
7666
7667         * mini.c: Add configure checks for header files.
7668         * mini-x86.c: Add configure checks for header files.
7669         * trace.c: Add configure checks for header files.
7670         * aot-runtime.c: Add configure checks for header files.
7671         * aot-compiler.c: Add configure checks for header files.
7672         * driver.c: Add configure checks for header files.
7673         * mini-codegen.c: Add configure checks for header files.
7674         
7675         Code is contributed under MIT/X11 license.
7676
7677 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
7678
7679         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
7680         icompare_imm -128 + op_iclt. Fixes #81703.
7681
7682 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
7683
7684         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
7685
7686 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7687
7688         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
7689         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
7690         so that all isinst checks now use "interface_bitmap".
7691
7692 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
7693
7694         * cpu-amd64.md (jmp): Fix a warning.
7695
7696         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
7697
7698         * basic.cs: Add new regression test.
7699
7700         * basic.cs: Remove test which is now in basic-long.cs.
7701
7702         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
7703
7704         * basic-long.cs: Add new test.
7705         
7706 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
7707
7708         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
7709
7710 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
7711
7712         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
7713
7714         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
7715         places.
7716         
7717         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
7718         throwing code a bit.
7719
7720         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
7721         the exception throwing code a bit.
7722
7723         * mini-x86.c (get_call_info): Allocate result from a mempool.
7724
7725 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
7726
7727         * aot-compiler.c (find_typespec_for_class): Fix the assert.
7728
7729         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
7730
7731         * mini.h (MonoCompile): Add 'token_info_hash' field.
7732
7733         * mini.c: Save token->method associations during compilation so the AOT 
7734         compiler can use it.
7735         
7736         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
7737         which reference generic classes and methods.
7738
7739 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
7740
7741         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
7742
7743         * aot-compiler.c (compile_method): Fix a typo in a comment.
7744
7745         * aot-runtime.c (decode_cached_class_info): Skip generic types.
7746
7747         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
7748         everything generic.
7749
7750         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
7751
7752 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
7753
7754         * mini.h (MonoCompile): Add 'args' field.
7755
7756         * mini.c (mono_compile_create_vars): Store variables representing the arguments
7757         into cfg->args.
7758
7759         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
7760
7761 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
7762
7763         * mini.c (mono_compile_get_interface_var): Remove this unused function.
7764
7765         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
7766
7767         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
7768         opcodes for some opcodes.
7769
7770         * mini.h *.brg *.c: Use the new opcodes.
7771
7772 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
7773
7774         * mini.h: Bumped aot revision.
7775
7776         * inssel.brg: modified code generation of type checks for interfaces
7777         to use the new "MonoClass.interface_bitmap" instead of the old
7778         "MonoClass.interface_offsets".
7779
7780 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
7781
7782         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
7783
7784 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
7785
7786         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
7787         64 bit platforms.
7788
7789 2007-04-27  Neale Ferguson <neale@sinenomine.net>
7790
7791         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
7792
7793 2007-04-27  Wade Berrier  <wberrier@novell.com>
7794
7795         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
7796         mini.h) to fix build.
7797
7798 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
7799
7800         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
7801         
7802         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
7803         causes the corlib unit tests to fail.
7804
7805 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
7806
7807         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
7808
7809         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
7810
7811         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
7812         opcodes to the comparison relations.
7813
7814         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
7815         opcodes to their types.
7816         
7817         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
7818
7819         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
7820         it in cfg->arch.cinfo.
7821
7822         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
7823
7824         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
7825         cfg->cil_offset_to_bb.
7826
7827 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
7828
7829         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
7830         created becase of initlocals.
7831
7832 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
7833
7834         * mini-alpha.c cpu-alpha.md: More alpha port work from 
7835         Sergey Tikhonov <tsv@solvo.ru>.
7836
7837 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
7838
7839         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
7840
7841 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
7842
7843         * cpu-s390.md (break): Correct the length of break instruction.
7844
7845 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7846
7847         * mini.c: fix a couple of soft-float issues and comments.
7848
7849 2007-04-15  Miguel de Icaza  <miguel@novell.com>
7850
7851         * trace.c (is_filenamechar): - is also a filename char.
7852
7853 2007-04-15  Neale Ferguson <neale@sinenomine.net>
7854
7855         * mini-s390.c: Correct checking for enum type in return value processing.
7856
7857 2007-04-14  Raja R Harinath  <rharinath@novell.com>
7858
7859         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
7860         (version.h): Makefile is in the build directory.
7861
7862 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
7863
7864         * mini-amd64.h: fix for assertion failure on Solaris/amd64
7865
7866 2007-04-11  Martin Baulig  <martin@ximian.com>
7867
7868         * mini.c (can_access_member): Fix handling of generic classes;
7869         fixes #81259.
7870
7871 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
7872
7873         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
7874
7875 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
7876
7877         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
7878
7879 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
7880
7881         * mini-codegen.c: make sure the right spill amount is
7882         used for fp or integer registers (fixes the float_sub_spill() on ppc).
7883
7884 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
7885
7886         * mini-ppc.c: fixes for the fp_branch_nan test.
7887
7888 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
7889
7890         * basic.cs: Comment out new test which still fails on ia64.
7891
7892 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7893
7894         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
7895
7896 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
7897
7898         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
7899
7900 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
7901
7902         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
7903         on 64 bit machines. Fixes part of #80738.
7904
7905         * basic.cs: Add regression test.
7906
7907 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
7908
7909         * inssel.brg basic.cs: Revert previous change to fix build.
7910
7911         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
7912         platforms.
7913         
7914         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
7915
7916         * basic.cs: Add new regression test.
7917
7918 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
7919
7920         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
7921         many arguments.
7922
7923 2007-03-16  Neale Ferguson <neale@sinenomine.net>
7924
7925         * cpu-s390x.md: Correct length of break instruction.
7926
7927 2007-03-16  Neale Ferguson <neale@sinenomine.net>
7928
7929         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
7930         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
7931
7932 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
7933
7934         * *.c: Begin WIN64 port.
7935         * mini.c:  Use correct register in profiler.
7936         * mini-amd64.c: No inline assembly on Win64.
7937         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
7938         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
7939         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
7940         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
7941         mono_arch_ip_from_context for Win64.
7942         
7943         Contributed under MIT/X11 license.
7944
7945 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
7946
7947         * exceptions-amd64.c (seh_handler): Ditto.
7948
7949         * exceptions-x86.c (seh_handler): Fix a memory leak.
7950
7951 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
7952
7953         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
7954         mini-s390x.c: fixed peephole optimizations to deal
7955         correctly with 1 and 2 byte reload avoidance.
7956
7957 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
7958
7959         * cpu-s390.md, cpu-s390x.md: update localloc length.
7960
7961 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
7962
7963         * cpu-g4.md: added missing descriptions.
7964
7965 2007-03-14  Miguel de Icaza  <miguel@novell.com>
7966
7967         *  Makefile.am: Add support so the tail tests are not executed on
7968         PowerPC as that is a known limitation of the PowerPC port.
7969
7970 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
7971
7972         * runmdesc.bat:  Move to msvc directory.
7973         
7974 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
7975
7976         * runmdesc.bat:  Run executable that was produced by the current
7977         target and sent via an argument.
7978         
7979 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
7980
7981         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
7982         #81102.
7983
7984         * generics.2.cs: Add regression test.
7985
7986 2007-03-09  Wade berrier  <wberrier@novell.com>
7987
7988         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
7989
7990 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
7991
7992         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
7993         AOT code depends on this.
7994
7995 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
7996
7997         * mini.c: more precise tracking of types in the eval stack
7998         (part of fix for bug #81044).
7999
8000 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
8001
8002         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
8003
8004         * aot-compiler.c (encode_patch): Remove an obsolete comment.
8005
8006 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
8007
8008         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
8009
8010         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
8011
8012 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
8013
8014         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
8015         a pointer on 64 bit systems. Fixes #80190.
8016
8017         * iltests.il: Add new regression test.
8018
8019 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8020
8021         * mini.c: inline a constant for Environment.IsRunningOnWindows.
8022
8023 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
8024
8025         * trace.c: Remove an erroneous alignemnt check when tracing.
8026           Fixes --trace on OSX86.
8027
8028 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8029
8030         * mini-$(arch).h: initialize SP in context for all the archs.
8031
8032 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
8033
8034         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
8035         regressions in the thread tests.
8036
8037 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
8038
8039         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
8040         - fixed implementation of LOCALLOC opcode
8041         - implemented non-un compare for floats
8042         - code cleanup
8043         - implementation of FDIV and CKFINITE opcodes
8044         - fixes for latest mono updates
8045         - additional arch opcodes
8046
8047 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8048
8049         * Makefile.am: simplify and merge rules for cross-compilation.
8050
8051 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
8052
8053         * local-propagation.c: Actually *apply* the fix for bug 80591...
8054
8055 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8056
8057         * mini-exceptions.c: backuot part of the last change
8058         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
8059
8060 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
8061         * inssel.brg: Fix bug 59286.
8062
8063
8064 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
8065
8066         * mini-exceptions.c: patch from Zoltan to correctly check for
8067         stack boundaries (using the stack register, not the frame register),
8068         fixes bugs #80724, #79717.
8069
8070 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
8071
8072         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
8073         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
8074
8075         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
8076         presence of frame pointer elimination.
8077
8078 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
8079         
8080         * mini-x86.h: NetBSD UCONTEX_REG defines.
8081
8082 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
8083
8084         * inssel-amd64.brg: Fix amd64 build.
8085
8086 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
8087
8088         * mini.h: remove extern to workaround what looks likes gcc bug 26905
8089         on amd64.
8090
8091 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
8092
8093         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
8094         ends.
8095
8096         * mini-<ARCH>.c: Use mono_is_regsize_var ().
8097
8098 2007-01-30 Mark Mason <mason@broadcom.com>
8099
8100            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
8101            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
8102            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
8103            beginning support for CEE_JMP [not quite working yet]
8104            * tramp-mips.c: LMF handling now works
8105         
8106 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
8107
8108         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
8109
8110         * mini.h (NULLIFY_INS): New macro.
8111
8112 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8113
8114         * mini.c: statistical profiler fix for windows, patch
8115         from Tor Lillqvist (tml@novell.com).
8116
8117 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
8118         * local-propagation.c: Fix bug 80591.
8119
8120 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8121
8122         * Makefile.am: put back the --export-dynamic option as with
8123         the previous gmodule flags (thanks to Robert Jordan).
8124
8125 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
8126
8127         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
8128
8129         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
8130         simplify and speed up the local register allocator. Also rename some fields
8131         like iassign->vassign.
8132         
8133         * regalloc.c: Remove some functions which are no longer used since their
8134         inlined version is in mini-codegen.c.
8135         
8136         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
8137
8138         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
8139
8140 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
8141
8142         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
8143         narrowing. Fixes #80622.
8144
8145         * iltests.il: Add new regresssion test. 
8146
8147 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8148
8149         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
8150         debug-debugger.c, debug-debugger.h: warning fixes.
8151         * driver.c: updated copyright year and made it fit in one line.
8152
8153 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
8154
8155         * aot-runtime.c: updated to use mono-dl instead of gmodule.
8156
8157 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
8158
8159         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
8160
8161         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
8162
8163         * iltests.il: Add new test for bug #80507.
8164
8165 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8166
8167         * mini-arm.h: use soft-float also on vfp for now.
8168
8169 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8170
8171         * mini.c: fix some more soft-float issues.
8172
8173 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
8174
8175         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
8176
8177 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
8178         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
8179         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
8180         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
8181
8182 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
8183
8184         * mini-arm.c: typo fix.
8185
8186 2007-01-23  Neale Ferguson <neale@sinenomine.net>
8187
8188         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
8189
8190 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
8191
8192         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
8193         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
8194
8195         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
8196
8197         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
8198
8199         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
8200         
8201         * inssel.brg: Fix a warning.
8202
8203         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
8204
8205         * abcremoval.c ssa.c ssapre.c: Update after this change.
8206         
8207         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
8208
8209         * dominators.c (df_set): Use mono_bitset_union_fast.    
8210
8211 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8212
8213         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
8214         mini-codegen.c: reduce relocations and memory usage for the cpu
8215         description.
8216
8217 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
8218
8219         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
8220
8221         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
8222         to reduce their size.
8223
8224 2007-01-19 Mark Mason <mason@broadcom.com>
8225
8226         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
8227         * mini-mips.c: more configuration macros, support long conditional branches, additional
8228         asserts, fix epilog instrumentation.
8229         * mini-mips.h: use standard stack walk
8230         * cpu-mips.md: increase size of div, rem and conditional branches
8231         
8232 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
8233
8234         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
8235         to cpu spec data.
8236
8237 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
8238
8239         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
8240         (compile_method): Ditto.
8241
8242         * aot-runtime.c (decode_klass_info): Ditto.
8243
8244         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
8245         needed by the code generated by inssel.brg. Also fix a warning.
8246
8247 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
8248
8249         * mini.c: deal with enums that become genericinsts by
8250         being nested in a generic class (bug #79956).
8251
8252 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8253
8254         * mini.c: match the generic definition to check for
8255         private access with generic types (bug #78431).
8256
8257 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
8258
8259         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
8260         to make life easier for people cross-compiling that insist on not
8261         using scratchbox.
8262
8263 2007-01-17 Mark Mason <mason@broadcom.com>
8264
8265         * inssel-long.brg: patch to deal with mips missing flags
8266         * inssel-long32-mips.brg: implement overflow checks
8267         * insset-mips.brg: implement overflow checks
8268         * mini-mips.h: implement conditional exception handling
8269         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
8270           Remove unused code, minor cleanups.
8271         * exceptions-mips.c: minor cleanups
8272         * mini-ops.h: add mips conditional exception ops
8273         * cpu-mips.md: add mips conditional exception ops
8274
8275         
8276 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8277
8278         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
8279         to deal with mips missing of flags.
8280
8281 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8282
8283         * exceptions-ppc.c: execute fault handlers.
8284
8285 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
8286
8287         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
8288
8289 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
8290
8291         * mini.c: handle also floating point values in initialize_array.
8292
8293 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8294
8295         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
8296         array initialization and make it conditional on the intrins option.
8297
8298 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8299
8300         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
8301         relocations and put the patch info names close to the enum definition.
8302
8303 2007-01-15 Mark Mason <mason@broadcom.com>
8304
8305         * basic.cs, exceptions.cs: break up large tests to increase debugability.
8306
8307 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8308
8309         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
8310
8311 2007-01-12  Raja R Harinath  <rharinath@novell.com>
8312
8313         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
8314
8315 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
8316
8317         * Makefile.am: distribute the mips sources.
8318
8319 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8320
8321         * mini-codegen.h: handle bug #80489 here, by excluding ecx
8322         directly.
8323
8324 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
8325
8326         * cpu-x86.md: back out for now as this triggers other regressions.
8327
8328 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8329
8330         * cpu-x86.md: force src1 and dest regpair for long shift instructions
8331         to eax:edx, so ecx can't get allocated to them (bug #80489).
8332
8333 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
8334
8335         * mini.c, mini-exceptions.c: enabled running fault handlers
8336         (bug #80469).
8337
8338 2007-01-03  Miguel de Icaza  <miguel@novell.com>
8339
8340         * driver.c: If nothing fail, do not use the string "failed",
8341         because it makes it very annoying to view test result logs on the
8342         web. 
8343
8344 2006-12-30  Miguel de Icaza  <miguel@novell.com>
8345
8346         * debug-debugger.c (mono_debugger_main): Rename "main" to
8347         "main_method" to prevent a warning.
8348
8349         Remove a warning for unused field.
8350
8351 2006-12-28  Martin Baulig  <martin@ximian.com>
8352
8353         * debug-debugger.c
8354         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
8355
8356 2006-12-22  Martin Baulig  <martin@ximian.com>
8357
8358         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
8359         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
8360         seperate `.mdb_debug_info' section, so we can access it from the
8361         debugger even if the binary is stripped.
8362
8363         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
8364         from the `.mdb_debug_info' here to prevent the linker from
8365         removing that section.
8366
8367         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
8368         mdb-debug-info64.s.
8369
8370 2006-12-19  Robert Jordan  <robertj@gmx.net>
8371
8372         * mini-x86: enable the code to return small structures in
8373         registers for FreeBSD as well. Fixes bug #80278.
8374         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
8375
8376 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8377
8378         * mini-x86.c: align the stack when calling the profiler
8379         function instrumenting the prolog (on OSX).
8380
8381 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
8382
8383         * mini.c: emit a break opcode where Debugger.Break () is called.
8384
8385 2006-12-13  Miguel de Icaza  <miguel@novell.com>
8386
8387         * mini.c (mono_method_to_ir): Provide useful information on this
8388         assert, to prevent others from debugging like I did.
8389
8390 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8391
8392         * mini.c: enable code which was incorrectly commented
8393         (bug #80235).
8394
8395 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8396
8397         * mini-x86.c: enable on OSX, too, the code to return small
8398         structures in registers.
8399
8400 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
8401
8402         * mini-x86.c: remove the use of the dynamic code manager here, too.
8403
8404 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
8405
8406         * mini.h, debug-debugger.c, tramp-*.c: fixed 
8407         mono_debugger_create_notification_function() to use
8408         mono_global_codeman_reserve () instead of a dynamic code manager.
8409
8410 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
8411
8412         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
8413         ves_array_element_address() jit icall and use a generated
8414         managed method instead (which is about 4 times faster for a rank 3
8415         array access).
8416
8417 2006-11-29  Mark Mason  <mason@broadcom.com>
8418
8419         * basic-calls.cs: additional tests for passing
8420         structures as function arguments.
8421
8422 2006-11-29  Mark Mason  <mason@broadcom.com>
8423
8424         * mini-mips.h: disable custom exception handling
8425         * mini-mips.c: throw/rethrow should use jalr to call
8426         exception stubs.  Fixed bug with passing structures
8427         by value. More support for tracing floating point
8428         functions.
8429
8430 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8431
8432         * mini.c: fixed typo in the soft-float ldind.r4 handling
8433         (bug #80086).
8434
8435 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8436
8437         * mini.c, mini.h, driver.c: added --runtime command line
8438         option to select a different runtime than the autodetected one.
8439         * jit.h: added API for embedders to initialize with a specific
8440         runtime version.
8441
8442 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
8443
8444         * mini.c: handle also boxing of r4 values (bug #80024).
8445
8446 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
8447
8448         * mini-ppc.c: force indirect calls until we reserve
8449         enough address space for all the generated code.
8450
8451 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
8452
8453         * exceptions-arm.c: workaround bugs in the libc definition
8454         of struct ucontext.
8455
8456 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
8457
8458         * inssel.brg: fixes from me and Mark Mason.
8459
8460 2006-11-23  Dick Porter  <dick@ximian.com>
8461
8462         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
8463         semaphore display now we've fixed the initial value
8464
8465 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8466
8467         * inssel.brg: partially revert the last change to fix the build.
8468
8469 2006-11-21  Mark Mason  <mason@broadcom.com>
8470
8471         * inssel.brg: Add and use compare-and-branch macros to support
8472         architectures that do not have condition code registers (ie. MIPS).
8473         * *-mips.{c,brg,md}: Fix copyright statements
8474
8475 2006-11-20  Mark Mason  <mason@broadcom.com>
8476
8477         * Makefile.am: remove mini-codegen.c from list of MIPS sources
8478         * mini.c: Allow GET_CONTEXT to be specified by the arch port
8479         * mini.h: Added declaration for mono_print_ins()
8480         * mini-codegen.c: added ins_spec initializer for MIPS
8481         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
8482         vreg to be virtual and hreg to be non-virtual.
8483         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
8484         is not yet working/implemented correctly.
8485         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
8486         non-static, fixup calls to print_ins() from other parts in the file.
8487
8488 2006-11-20  Mark Mason  <mason@broadcom.com>
8489
8490         * basic-calls.cs: added tests for passing structures as arguments
8491         to calls.
8492
8493 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
8494
8495         * inssel-long32.brg: optimize signed division by power of two.
8496
8497 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
8498
8499         * mini-arm.c: added support for interworking with thumb code
8500         (mono must be still be built using the ARM instruction encoding).
8501
8502 2006-11-19  Miguel de Icaza  <miguel@novell.com>
8503
8504         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
8505         verifier has different rules for it.   Fixes a few verifier issues
8506         in the test suite.
8507
8508         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
8509         at the end, so people know what happened.
8510
8511 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
8512
8513         * brach-opts.c: in optimize_exception_target() make sure we
8514         are in a catch clause (fixes bug #79871).
8515
8516 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8517
8518         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
8519         more soft-float support fixes.
8520
8521 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
8522
8523         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
8524         that are passed half on the stack and half in registers.
8525
8526 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
8527
8528         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
8529         more mips integration work from Mark E Mason 
8530         <mark.e.mason@broadcom.com>.
8531
8532 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8533
8534         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
8535         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
8536         tramp-mips.c: added sources for the mips port, not
8537         integrated in the build yet. Contributed by
8538         Mark E Mason <mark.e.mason@broadcom.com>.
8539
8540 2006-11-14  Neale Ferguson <neale@sinenomine.net>
8541
8542         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
8543
8544 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8545
8546         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
8547         put the soft-float rules in its own file since it seems to
8548         break s390 compilation.
8549
8550 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8551
8552         * mini-arm.c: fixed wrnings.
8553
8554 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
8555
8556         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
8557         inssel-arm.brg: ARM support for soft-float.
8558
8559 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8560
8561         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
8562         loads and stores of 32 bit fp values.
8563
8564 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
8565
8566         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
8567
8568         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
8569         works. Fixes #79852 and #79463.
8570
8571 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8572
8573         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
8574         more soft-float support WIP and fixes.
8575
8576 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
8577
8578         * mini-arm.c: some VFP updates.
8579
8580 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
8581
8582         * mini-exceptions.c: 0 is a valid local var offset in some
8583         architectures, don't assert (bug #78508).
8584
8585 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
8586
8587         * exceptions-arm.c: fixed off by one error in stack walk code.
8588
8589 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
8590
8591         * mini.h, mini.c: more precise tracking of type load exceptions.
8592
8593 2006-11-03  Robert Jordan  <robertj@gmx.net>
8594
8595         * Makefile.am: [WIN32] Add monow.exe target.
8596         * driver.c: [WIN32] Don't detach the console when debugging.
8597         Fixes bug #79797.
8598         
8599 2006-10-30  Miguel de Icaza  <miguel@novell.com>
8600
8601         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
8602
8603 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
8604
8605         * aot-compiler.c (emit_method_info): Add a case missed earlier.
8606
8607         * driver.c (mini_regression): Fix --regression with AOT.
8608
8609         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
8610
8611 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
8612
8613         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
8614
8615         * mini-sparc.h: Don't use sigaction on sparc/linux.
8616
8617         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
8618
8619         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
8620
8621         * mini-exceptions.c: Add proper include files for getpid ().
8622
8623 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
8624
8625         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
8626         address instead of a MonoJitInfo* to avoid decoding the exception info for the
8627         method.
8628
8629         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
8630         name cache to reduce its size.
8631
8632         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8633
8634 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
8635
8636         * mini-x86.c: Save/restore the current LMF structure more efficiently using
8637         the mono_lmf TLS variable.
8638
8639         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
8640         trampoline lmf frames.  
8641
8642         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
8643
8644 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
8645
8646         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
8647         the mono_lmf TLS variable.
8648
8649         * mini-exceptions.c: Access the LMF structure through accessors.
8650
8651         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
8652         variable instead of in jit_tls->lmf.
8653
8654         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
8655         
8656         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
8657         trampoline lmf frames.
8658
8659         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
8660
8661 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
8662
8663        * mini.c trace.c mini-x86.c: Revert these too.
8664         
8665        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
8666        signature change.
8667
8668 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
8669
8670         * genmdesc.c: removed now dead code.
8671
8672 2006-10-09  Robert Jordan <robertj@gmx.net>
8673
8674         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
8675
8676 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
8677
8678         * mini.h: do not leave gaps in the opcode values.
8679
8680 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
8681
8682         * jit-icalls.h: flag functions as internal here, too.
8683
8684 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
8685
8686         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
8687         functions with the internal attribute.
8688
8689 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
8690
8691         * aot-compiler.c: fclose the file descriptor in the profile read loop.
8692
8693 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
8694
8695         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
8696         for soft-float.
8697
8698 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
8699
8700         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
8701         tail calls as on other platforms.
8702
8703         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
8704
8705         * iltests.il: Add a few tailcall tests.
8706
8707 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8708
8709         * driver.c: fix loop for old compilers (bug #79521).
8710
8711 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
8712
8713         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
8714
8715         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
8716
8717         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
8718         metadata without any code.
8719
8720         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
8721         more precise debugging information using gdb.
8722
8723 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
8724
8725         * inssel-ia64.brg: Make the helper methods static.
8726
8727 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8728
8729         * inssel-x86.brg: make the helper methods static.
8730
8731 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
8732
8733         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
8734
8735 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8736
8737         * mini.c: updates for monoburg changes.
8738         * inssel.brg: make a few helper functions static as they should.
8739
8740 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
8741
8742         * Makefile.am: Move mini-codegen.c to common_sources.
8743
8744 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8745
8746         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
8747         instructions.
8748         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
8749         mini-ppc.h: port to use the common local register allocator.
8750
8751 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8752
8753         * mini.h: Remove the comment too then.
8754
8755 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
8756
8757         * mini.h: put back backend.data which is to be used shortly and
8758         doesn't increase the size of MonoInst. If any 64 bit arch aligned
8759         pointers on 4 byte boundaries it'd have much bigger issues running
8760         and you can ifdef it out anyway.
8761
8762 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8763
8764         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
8765         MonoInst size by 4 bytes on 64 bit machines.
8766
8767 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
8768
8769         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
8770         replacement with more meaningful field names. Arch maintainers, please
8771         check the assigned names are good enough for your arch.
8772
8773 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8774
8775         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
8776         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
8777
8778 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8779
8780         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
8781         relocations and memory requirements, put the optimization flags
8782         definitions in their own file.
8783
8784 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
8785
8786         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
8787
8788         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
8789
8790 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
8791
8792         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
8793
8794 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
8795
8796         * inssel.brg: use the correct function to get the size of an item
8797         in an array, given an element class.
8798         * aot-compiler.c: do not access class->class_size directly.
8799
8800 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8801
8802         * mini.h, debug-mini.c: added a debugging function to print
8803         info about local variables and arguments in a jitted method.
8804
8805 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
8806
8807         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
8808
8809         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
8810
8811 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8812
8813         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
8814         inner and outer loops when passing vtypes.
8815
8816 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
8817
8818         * mini-ppc.c: take into account the cpu errata for cache flushing
8819         which caused some random errors (bug #79381).
8820
8821 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8822
8823         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
8824         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
8825
8826 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
8827
8828         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
8829         loaded.
8830
8831         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
8832         freebsd ports tree.
8833
8834         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
8835         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
8836
8837         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
8838         displacement.
8839
8840 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
8841
8842         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
8843
8844 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
8845
8846         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
8847         macro does not have to be changed during debugging.
8848
8849         * 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>.
8850
8851         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
8852
8853         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
8854         
8855         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
8856         MONO_ARCH_NO_EMULATE_MUL is defined.
8857
8858         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
8859
8860         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
8861
8862         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
8863
8864         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
8865         
8866 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
8867
8868         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
8869         stuff to mini-exceptions.c where it is used.
8870
8871         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
8872         setup code, the real one is in mini-exceptions.c.
8873
8874         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
8875         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
8876         some changes from the freebsd ports tree.
8877
8878         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
8879         constants.
8880         
8881         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
8882
8883 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
8884
8885         * mini.c: on Linux, check for /proc to be mounted
8886         (bug# 79351, novell bug#201204).
8887
8888 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
8889
8890         * mini.c: handle cases where pthread_attr_getstack() behaves
8891         incorrectly (bug #78096).
8892
8893 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
8894
8895         * mini-arm.c: support larger stack frames (bug #79272).
8896
8897 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
8898
8899         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
8900
8901         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
8902         tokens.
8903
8904         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
8905         mono_class_from_name () to find a class from its name.
8906
8907         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
8908
8909 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
8910
8911         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
8912
8913 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
8914
8915         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
8916
8917 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
8918
8919         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
8920         callinfo->trampoline.
8921
8922         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
8923         fixes #79271.
8924         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
8925         future.
8926
8927 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
8928
8929         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
8930
8931 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
8932
8933         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
8934         stats.method_trampolines, it is already done by the generic trampoline code.
8935
8936         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
8937         
8938 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
8939
8940         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
8941
8942         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
8943
8944         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
8945
8946         * mini.c (print_jit_stats): Print mscorlib mempool size too.
8947         
8948         * mini.c (print_jit_stats): Print new stats.
8949
8950         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
8951
8952 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
8953
8954         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
8955         Address on two dimensional arrays. Fixes #78729.
8956
8957         * mini.h (MonoCompile): Add a 'skip_visibility' field.
8958
8959         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
8960         a method.
8961
8962         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
8963
8964         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
8965         #79130.
8966         
8967         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
8968         a race condition.
8969         (mini_get_ldelema_ins): Ditto.
8970
8971 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
8972
8973         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
8974         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
8975         Fixes #79213.
8976
8977 2006-08-29 Neale Ferguson <neale@sinenomine.net>
8978
8979         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
8980         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
8981
8982         * exceptions-s390x.c: Cosmetic change.
8983
8984         * tramp-s390.c: Fix warning.
8985
8986         * cpu-s390.md: Correct length of mul_imm.
8987
8988 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
8989
8990         * aot-compiler.c: added binary writer with ELF backend
8991         implementation (only on Linux/x86 for now).
8992
8993 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
8994
8995         * Makefile.am: Don't run net 2.0 AOT tests.
8996
8997         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
8998         (mono_compile_assembly): Skip net 2.0 assemblies as well.
8999
9000         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
9001
9002 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9003
9004         * aot-compiler.c: simplified and refactored the asm-writing code
9005         to allow different backends.
9006
9007 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
9008
9009         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9010
9011         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
9012         little. Share patches of type TYPE_FROM_HANDLE as well.
9013
9014         * mini.c (mono_patch_info_equal): New helper function.
9015         (mono_patch_info_hash): Ditto.
9016
9017         * aot-compiler.c (emit_method_code): Fix s390 build.
9018
9019         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
9020         is not handled because it is stored as a flag and not as a type ctor. Fixes
9021         #79016.
9022
9023 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
9024
9025         * aot-compiler.c: Fix computation of GOT slot statistics.
9026         
9027         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
9028         Also remove support for not PIC AOT.
9029
9030         * mini.h: Bump AOT file format version.
9031
9032         * objects.cs: Add a test for #78990.
9033
9034         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
9035         (peter.dettman@iinet.net.au). Fixes #79087.
9036
9037         * basic-long.cs: Add a test for the above.
9038
9039 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
9040
9041         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
9042         
9043         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
9044         code somewhat.
9045
9046 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
9047
9048         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
9049         exceptions.
9050
9051 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
9052
9053         * mini.c: Don't verify COM proxy invoke calls
9054         
9055
9056 2006-08-10  Dick Porter  <dick@ximian.com>
9057
9058         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
9059         which process is holding semaphores locked.
9060
9061 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
9062
9063         * mini-ia64.c mini-amd64.c: Fix #79027.
9064
9065         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
9066
9067         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
9068
9069         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
9070         implicit arguments in a vararg call. Fixes #79027.
9071
9072 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
9073
9074         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
9075         (mono_get_array_new_va_signature): Ditto.
9076
9077 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
9078
9079         * aot-runtime.c: Call init_plt lazily.
9080
9081         * inssel-long.brg: Fix unsigned long->int conversion.
9082
9083         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
9084
9085         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
9086         that most data is now in the .rss/.data section.
9087
9088 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
9089
9090         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
9091
9092         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
9093
9094         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
9095
9096         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
9097
9098         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
9099         virtual call. Fixes #79010.
9100
9101         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
9102         and use the result as the this argument in the real call.
9103
9104         * generics.2.cs: Add a new test for #79010.
9105         
9106 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
9107
9108         * mini-x86.c: Fix a warning.
9109
9110         * aot-compiler.c: Add a bunch of statistics.
9111
9112         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
9113
9114 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
9115
9116         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
9117
9118 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
9119
9120         * 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>.
9121
9122 2006-07-13  Miguel de Icaza  <miguel@novell.com>
9123
9124         * mini.c (mono_method_to_ir): Obtain the original method in the
9125         CIL stream and use this to perform validation.
9126
9127         Fixed: #78816
9128
9129 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
9130
9131         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
9132         (mono_arch_call_opcode): Ditto.
9133
9134         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
9135         #78826.
9136
9137         * mini.c (mono_patch_info_dup_mp): New helper function.
9138         
9139         * aot-compiler.c (compile_method): Fix some of the memory allocated during
9140         compilation. Fixes #78827.
9141
9142 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
9143
9144         * declsec.c: Use original security informations for
9145           MONO_WRAPPER_MANAGED_TO_MANAGED.
9146
9147 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
9148
9149         * mini.c: Allow Com Interop methods/classes and
9150         don't verify COM wrapper calls
9151         
9152
9153 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
9154
9155         * inssel-long32.brg: Fix long->i4 checked conversion.
9156
9157         * exceptions.cs: Add a test for the above.
9158
9159 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
9160
9161         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
9162
9163         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
9164         leaks.
9165
9166         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
9167         #78775.
9168
9169 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
9170
9171         * mini.c: Fix solaris/x86 exception handling.
9172
9173         * Makefile.am: Get rid of $(ICU_LIBS).
9174
9175 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
9176
9177         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
9178         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
9179         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
9180
9181         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
9182
9183         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
9184         this function causes a SIGSEGV.
9185
9186 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
9187
9188         * mini.c: Remove unused solaris/x86 includes.
9189
9190 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
9191
9192         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
9193
9194 2006-06-20  Jb Evain  <jbevain@gmail.com>
9195
9196         * cpu-g4.md: fix max length of start_handler instruction.
9197
9198 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
9199         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
9200
9201 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
9202         * ssa.c: Fixed bug 78653 for SSA based deadce.
9203         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
9204         MonoInst.flags, used in SSA based deadce.
9205         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
9206         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
9207
9208 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
9209
9210         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
9211         it can end up using non executable memory on ppc64 systems
9212         running ppc32 userspace (fix from Johannes Berg).
9213
9214 2006-06-14  Dick Porter  <dick@ximian.com>
9215
9216         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
9217         4.1.1
9218
9219 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
9220         * mini.c: Made so that inline is locally disabled if it would
9221         trigger a .cctor, because too many apps depend on this behavior
9222         (which seems to be also the one of the MS CLR).
9223
9224 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
9225
9226         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
9227         No idea why this worked before.
9228
9229         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
9230         which branch to outer exception clauses since they could skip the
9231         inner finally clauses. Fixes #78633.
9232
9233         * exceptions.cs: Add a test for the above.
9234
9235         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
9236         Fixes #78629.
9237
9238         * iltests.il: Add a test for the above.
9239
9240 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
9241
9242         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
9243         after the end of a try bblock, to prevent asserts in mini_method_compile ().
9244
9245         * iltests.il: Add a test for the above.
9246
9247 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
9248
9249         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
9250         
9251         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
9252         methods as instrinsics.
9253
9254 2006-06-09  Wade Berrier <wberrier@novell.com>
9255
9256         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
9257         (simple-cee-ops.h ssapre-mini-ops.h)
9258
9259 2006-06-09  Neale Ferguson <neale@sinenomine.net>
9260
9261         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
9262         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
9263         instruction).
9264         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
9265         * cpu-s390x.md: Fix max. length values for a couple of instructions.
9266
9267 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
9268
9269         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
9270
9271 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
9272
9273         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
9274         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
9275         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
9276         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
9277         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
9278         of opcodes, so that bug 78549 should not happen again.
9279         * ssapre.c: Updated to use the renamed files.
9280
9281 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
9282
9283         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
9284         in OP_ATOMIC_EXCHANGE_I4.
9285
9286 2006-06-07  Wade Berrier <wberrier@novell.com>
9287
9288         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
9289         in mono_debugger_create_notification_function)
9290
9291 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
9292
9293         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
9294         
9295         * mini.c (type_from_stack_type): Disable some changes which do not
9296         seem to work.
9297
9298         * driver.c: Reenable opts.
9299
9300         * mini.h (MonoStackSlot): New structure to keep track of the verification state
9301         of the evaluation stack.
9302         
9303         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
9304         evaluation stack trace at entry to the bblock.
9305
9306         * mini.c (merge_stacks): New function to perform verification of stack merges.
9307         Turned off by default.
9308
9309         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
9310         STACK_MP.
9311         
9312 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
9313
9314         * local-propagation.c: Fixed bug 78549.
9315
9316 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
9317
9318         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
9319
9320 2006-06-02  Miguel de Icaza  <miguel@novell.com>
9321
9322         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
9323         tramp-arm.c, tramp-ia64.c
9324         (mono_debugger_create_notification_function): Update signature to
9325         new signature and use new protocol for creating the notification
9326         function.  
9327
9328         Should fix the build.
9329
9330 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
9331
9332         * exceptions-ppc.c (mono_jit_walk_stack)
9333         (ves_icall_get_frame_info): Fix the build
9334
9335 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
9336
9337         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
9338
9339 2006-05-31  Raja R Harinath  <rharinath@novell.com>
9340
9341         * il2tests.2.il: New file for generics CIL tests.  Add test for
9342         #78019.
9343         * Makefile.am: Update.
9344
9345         Fix #78019
9346         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
9347         to nullable types.
9348
9349 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
9350
9351         * aliasing.c: Fixed bug 78311.
9352
9353 2006-05-29  Martin Baulig  <martin@ximian.com>
9354
9355         * mini-exceptions.c (mono_find_jit_info): When computing the
9356         native offset, check whether we're actually inside the method's
9357         code; call mono_debug_print_stack_frame() to format the frame.
9358         (ves_icall_System_Exception_get_trace): Call
9359         mono_debug_print_stack_frame() to format the stack frame.
9360         (ves_icall_get_trace): Update to the new debugging API.
9361         (mono_jit_walk_stack_from_ctx): Likewise.
9362         (ves_icall_get_frame_info): Likewise.
9363
9364         * mini.c (get_method_from_ip): Use the new debugging API.
9365         (mono_print_method_from_ip): Likewise.
9366
9367         * exceptions-ppc.c
9368         (mono_jit_walk_stack): Use the new debugging API.
9369         (ves_icall_get_frame_info): Likewise.   
9370
9371 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
9372
9373         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
9374
9375 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
9376
9377         * mini.c: Added "limitator" to inline for debugging.
9378
9379 2006-05-24  Martin Baulig  <martin@ximian.com>
9380
9381         * debug-debugger.c (mono_debugger_init): Create a private,
9382         malloc()-based code manager for the notification function and
9383         intentionally leak it on exit.  This fixes the crash-on-exit race
9384         condition.
9385
9386         * tramp-amd64.c
9387         (mono_debugger_create_notification_function): Added
9388         `MonoCodeManager *' argument.
9389
9390         * tramp-x86.c
9391         (mono_debugger_create_notification_function): Added
9392         `MonoCodeManager *' argument.
9393
9394 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
9395
9396         * aliasing.c: Fixed 64 bit issue.
9397         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9398         default since all known bugs are fixed (one more time!).
9399
9400 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9401
9402         * mini.c: write barrier support.
9403
9404 2006-05-23  Martin Baulig  <martin@ximian.com>
9405
9406         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
9407         check at the top of the file.
9408
9409 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
9410
9411         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
9412         reverting changes without reason and without changelog entries.
9413
9414 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
9415
9416         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
9417         to a few opcodes. Fixes #78439.
9418
9419         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
9420         consistency with other archs.
9421
9422         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
9423
9424 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9425
9426         * debug-debugger.c: fix the build.
9427
9428 2006-05-17  Martin Baulig  <martin@ximian.com>
9429
9430         * debug-debugger.c
9431         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
9432         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
9433         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
9434         (debugger_attach): Call GC_mono_debugger_add_all_threads().
9435
9436 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
9437
9438         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
9439
9440 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
9441
9442         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
9443         MONO_TYPE_GENERICINST.
9444         
9445         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
9446         MONO_TYPE_GENERICINST.
9447
9448 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
9449
9450         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
9451         #78325.
9452
9453 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
9454
9455         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
9456         mempool.
9457         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
9458
9459 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
9460
9461         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
9462         mono_trace_cleanup ().
9463
9464         * iltests.il: Fix problem with the newly added test.
9465
9466         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
9467         due to register constraints, free up the previous hreg. Fixes #78314.
9468
9469         * iltests.il: Add new test for #78314.  
9470
9471         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
9472         Interlocked.Add. Fixes #78312.
9473
9474         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
9475         
9476 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
9477
9478         * inssel.brg (mini_emit_virtual_call): Fix a warning.
9479
9480 2006-05-05  Martin Baulig  <martin@ximian.com>
9481
9482         * debug-mini.c (mono_debug_open_block): New method.
9483
9484         * mini-amd64.c
9485         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9486         the beginning of each basic block.
9487
9488         * mini-x86.c
9489         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9490         the beginning of each basic block.
9491
9492 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9493
9494         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9495         default until I understand why they break the build on amd64.
9496
9497 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
9498
9499         * mini.c (mini_cleanup): Call mono_cleanup ().
9500
9501         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
9502         errors.
9503
9504 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9505
9506         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
9507         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9508         default since all known bugs are fixed, and I cannot reproduce bug
9509         77944... I'm asking Matt Hargett to test again after this commit.
9510
9511 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
9512
9513         * mini-codegen.c: Fixed typo that thrashed inline.
9514
9515 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
9516
9517         * dominators.c (compute_dominators): Avoid using a worklist since
9518         it is not correct in some cases. Instead, iterate over all bblocks as
9519         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
9520
9521 2006-04-28  Miguel de Icaza  <miguel@novell.com>
9522
9523         * mini.c (mono_jit_compile_method_inner): Use
9524         mono_prepare_exception_from_error that resets the value
9525         internally.
9526
9527 2006-04-27  Miguel de Icaza  <miguel@novell.com>
9528
9529         * mini.c: Move the mini_loader_error_to_exception to metadata. 
9530         
9531 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9532
9533         * aliasing.c: Fixed bug 78210.
9534
9535 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9536
9537         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9538         default until all their problems (or the ones they trigger) are fixed.
9539
9540 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
9541
9542         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
9543         
9544         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
9545         as loaded only after resolving patches since that could invoke the same method.
9546
9547         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
9548
9549         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
9550         functions.
9551
9552         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
9553         AOT loader.
9554
9555         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
9556         stack.
9557
9558         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
9559         made from AOT code through the PLT table.
9560
9561         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
9562         holding the plt offset when a call is made to the aot plt trampoline.
9563         
9564 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9565
9566         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
9567         amd64 AOT support.
9568
9569         * Makefile.am (common_sources): Fix build breakage.
9570
9571         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
9572         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
9573         intra-assembly calls if possible.
9574         
9575         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
9576
9577         * mini-trampolines.c: Handle PLT entries.
9578
9579         * mini.c: Avoid creating a GOT var for calls.
9580
9581         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
9582         from mscorlib code.
9583
9584         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
9585         from mscorlib code.
9586
9587         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
9588         AOT code.       
9589
9590         * mini.h: Bump AOT file format version.
9591         
9592         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
9593         covers more cases.
9594
9595 2006-04-25  Martin Baulig  <martin@ximian.com>
9596
9597         * driver.c: Disable copyprop, consprop and inline when running
9598         inside the debugger.
9599
9600 2006-04-25  Martin Baulig  <martin@ximian.com>
9601
9602         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
9603         with `get_current_thread' and added `detach'.
9604         (MonoDebuggerMetadataInfo): Added `thread_size',
9605         `thread_tid_offset', `thread_stack_ptr_offset' and
9606         `thread_end_stack_offset'.
9607
9608 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9609
9610         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
9611         aot-runtime.c.
9612
9613         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
9614         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
9615
9616         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
9617
9618         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
9619
9620         * aot.c: Add support for ADJUSTED_IID.  
9621
9622 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
9623
9624         * aot.c (emit_method_order): Don't align method_order_end.
9625
9626         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
9627         the interface ID changes.
9628
9629 2006-04-21  Dick Porter  <dick@ximian.com>
9630
9631         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
9632         cleaning up a thread.  Fixes the new part of bug 77470.
9633
9634 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
9635
9636         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
9637         to managed wrapper.
9638                      
9639 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
9640
9641         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
9642         
9643         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
9644         SIGSEGV. Fixes #78072.
9645
9646         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
9647         unregister our SIGABRT handler.
9648
9649 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
9650
9651         * mini.c: Disabled inline where it can alter the call stack in a
9652         way visible from managed code.
9653         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
9654         default.
9655
9656 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
9657
9658         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
9659         on other platforms. Fixes #78089.
9660
9661 2006-04-13  Martin Baulig  <martin@ximian.com>
9662
9663         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
9664         determine whether we're inside the debugger.
9665
9666         * debug-debugger.h
9667         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
9668
9669 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9670
9671         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
9672         handler clauses. Fixes #78024.
9673
9674         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
9675         in the CALL_MEMBASE opcodes. Fixes #78088.
9676         (mono_arch_get_vcall_slot_addr): Ditto.
9677
9678 2006-04-10  Martin Baulig  <martin@ximian.com>
9679
9680         * debug-debugger.c: The thread handling code has now been moved
9681         into ../metadata/threads.c.
9682
9683 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9684
9685         * driver.c (mono_main): Fix --with-gc=none build.
9686
9687         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
9688         (mono_spillvar_offset_float): Ditto.
9689         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
9690         hreg, not when its !global, since on ia64, there is a third category: stacked
9691         registers.      
9692
9693 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
9694
9695         * mini.c: set MonoInst->klass for load field address and a few other
9696         places.
9697
9698 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9699
9700         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
9701
9702 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
9703
9704         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
9705         the branch opt changes.
9706
9707 2006-04-06  Dick Porter  <dick@ximian.com>
9708
9709         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
9710         
9711         * wapihandles.c (mini_wapi_seminfo): 
9712         * driver.c (mono_main): Add semaphore info option
9713
9714 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
9715
9716         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
9717         branch optimization changes. Fixes #78009.
9718
9719 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9720
9721         * mini.c: ignore accessibility of methods in managed->native wrappers.
9722
9723 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
9724
9725         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
9726         
9727         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
9728
9729 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
9730
9731         * mini.c: Modify the branch optimizations to preserve the invariant that
9732         the entries inside the in_bb and out_bb arrays are unique.
9733         (mono_unlink_bblock): Avoid creation of new arrays.
9734
9735 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
9736
9737         * mini.c (mono_unlink_bblock): Fix regression caused by previous
9738         change (#77992).
9739
9740 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
9741
9742         * mini.c (optimize_branches): Remove the "optimizations" in
9743         the cbranch1/cbranch2 -> branch cases which were causing several
9744         problems in the past. Fixes #77986.
9745
9746 2006-03-31  Chris Toshok  <toshok@ximian.com>
9747
9748         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
9749         default optimizations :(
9750
9751 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
9752
9753         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
9754         branch.
9755
9756 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
9757
9758         * local-propagation.c: Added comments to structs and removed
9759         "Mono" prefixes from local tree mover types.
9760
9761 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
9762
9763         * Makefile.am (arch_sources): Define this for each architecture so 
9764         libmono_la_SOURCES is defined in one place.
9765
9766 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
9767
9768         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
9769         from handles/.
9770
9771 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
9772
9773         * driver.c: print the GC name supplied by configure.
9774
9775 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
9776
9777         * local-propagation.c: Added tree mover, and moved here all the
9778         local propagation code from mini.c
9779         * mini.c: Added support for treeprop, and moved all the local
9780         propagation code to local-propagation.c
9781         * mini.h: Added support for treeprop
9782         * driver.c: Added support for treeprop, enabled consprop, copyprop,
9783         treeprop, inline and deadce by default
9784         * Makefile.am: Added local-propagation.c
9785
9786 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
9787
9788         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
9789
9790 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
9791
9792         * debug-debugger.c: make it compile without the Boehm GC.
9793
9794 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
9795
9796         * mini.c: fixed issue with mismatch when an icall is registered
9797         with multiple names but same address.
9798
9799 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
9800
9801         * declsec.c, mini-exceptions.c: use write barrier to set reference
9802         fields of managed objects.
9803
9804 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9805
9806         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
9807         (can_access_internals): Fix a warning.
9808
9809         * mini.c (print_method_from_ip): Rename this to 
9810         mono_print_method_from_ip so it gets exported.
9811
9812         * trace.c: Deal with strings inside StringBuilder's containing garbage
9813         and fix memory leaks. Fixes #77848.
9814
9815 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9816
9817         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
9818         fixes #77787.
9819
9820 2006-03-16 Neale Ferguson <neale@sinenomine.net>
9821         
9822         * mini-s390.c: Remove OP_X86_TEST_NULL.
9823
9824 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
9825
9826         * mini.c: use the correct GetHashCode() for the moving collector.
9827
9828 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
9829
9830         * liveness.c: Regalloc spill cost tuning.
9831
9832 2006-03-15 Neale Ferguson <neale@sinenomine.net>
9833         
9834         * mini-s390x.h: Correct S390_LONG macro.
9835
9836         * mini-s390x.c: Cleanup unused code.
9837
9838 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
9839
9840         * jit-icalls.h: New file.
9841
9842         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
9843         icalls and include that instead of including jit-icalls.c.
9844
9845         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
9846         OP_X86 opcodes.
9847
9848 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
9849
9850         * mini.c: when checking for member accessibility, also check for
9851         friend assemblies and for explicit interface implementations.
9852
9853 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
9854
9855         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
9856
9857         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
9858
9859         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
9860         common cases are done first.    
9861
9862         * mini-ops.h: Only define platform specific opcodes on the given platform.
9863
9864         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
9865         branch.
9866         
9867 2006-03-14  Martin Baulig  <martin@ximian.com>
9868
9869         Revert Paolo's change from r57348:
9870
9871         * mini.h: don't use gboolean for bitfields.
9872         * mini.c: verifier changes for fields and methods accessibility.
9873
9874 2006-03-13  Neale Ferguson <neale@sinenomine.net>
9875
9876         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
9877
9878         * mini-s390x.c: Fix conv_r_un.
9879
9880         * cpu-s390, cpu-s390x.md: Fix lengths.
9881
9882 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
9883
9884         * mini.c: nested types have access to all the nesting
9885         levels, not just the enclosing types.
9886
9887 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
9888
9889         * mini.c: added a few more verification checks.
9890
9891 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
9892
9893         * liveness.c: Merge optimizations from the linear-il branch.
9894
9895 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
9896
9897         * mini-ia64.c (emit_call): Add a comment.
9898
9899         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
9900
9901         * tramp-ia64.c: Fix some warnings.
9902
9903 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
9904
9905         * mini.h: don't use gboolean for bitfields.
9906         * mini.c: verifier changes for fields and methods accessibility.
9907
9908 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
9909
9910         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
9911         lazy icall wrapper changes.
9912
9913         * dominators.c: Replace all the dominator algorithms with faster
9914         ones from the linear-il branch.
9915
9916         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
9917         the mempool.
9918
9919         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
9920         common cases are done first.
9921
9922         * mini-amd64.c: Fix some warnings.
9923
9924         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
9925         from the mempool.
9926
9927         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
9928         added code.
9929
9930         * mini.h: Add a missing prototype.
9931
9932 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
9933
9934         * mini.c: Compile icall wrappers lazily.
9935
9936         * mini-codegen.c: Use printf instead of g_print since its much faster.
9937
9938         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
9939         function.
9940
9941         * mini.c (optimize_branches): Cache the negative result from 
9942         remove_block_if_useless ().
9943
9944         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
9945         Also fix some bblock linking issues.
9946
9947         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
9948         assembly files.
9949
9950         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
9951
9952         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
9953         accessed fields first, for better cache behavior.
9954         
9955 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
9956
9957         * mini.c: speedup IList<T> array accesses.
9958
9959 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
9960
9961         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
9962         inline_costs counter. Fixes #77190.
9963
9964 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
9965
9966         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
9967         trace messages. Fixes #77706.
9968
9969 2006-03-04  Martin Baulig  <martin@ximian.com>
9970
9971         * tramp-amd64.c, tramp-x86.c
9972         (mono_debugger_create_notification_function): Use
9973         mono_global_codeman_reserve() to allocate a buffer at runtime and
9974         return it.
9975
9976         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
9977
9978         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
9979         notification function at runtime and then call `initialize' in the
9980         `MONO_DEBUGGER__debugger_info' vtable.
9981
9982 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
9983
9984         * iltests.il: Fix a visibility problem.
9985
9986 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
9987
9988         * driver.c, mini.c: add hooks for the counters API.
9989
9990 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
9991
9992         * driver.c: show disabled options.
9993
9994 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
9995
9996         * linear-scan.c: always use cost-driven selection.
9997
9998 2006-02-28  Raja R Harinath  <rharinath@novell.com>
9999
10000         * jit-icalls.c (helper_compile_generic_method): Revert change from
10001         2006-02-24.
10002
10003 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
10004
10005         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
10006
10007 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
10008
10009         * inssel.brg: style fixes, mostly to force the updated monoburg
10010         to run for people using svn.
10011
10012 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
10013
10014         * mini.c: match monoburg changes.
10015
10016 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10017
10018         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
10019         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
10020         declaration in the header file.
10021
10022 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
10023
10024         * helpers.c: reduce relocations and mem usage.
10025
10026 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
10027
10028         * mini.h, mini-codegen.c: disable logging features if
10029         requested by configure.
10030
10031 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
10032
10033         * mini.c: tiny verifier changes.
10034
10035 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10036
10037         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
10038         cpu-pentium.md: stack alignment changes for osx/x86,
10039         partially from Geoff Norton <gnorton@customerdna.com>.
10040
10041 2006-02-24  Raja R Harinath  <harinath@gmail.com>
10042
10043         * jit-icalls.c (helper_compile_generic_method): Update to changes
10044         in metadata/class.c.
10045
10046 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
10047         
10048         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
10049         
10050         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
10051         interface calls with large offsets.
10052
10053 2006-02-23  Raja R Harinath  <rharinath@novell.com>
10054
10055         * jit-icalls.c (helper_compile_generic_method): Document the
10056         special-case we depend on so that we can inflate the method twice
10057         with the same context with no bad side-effects.
10058
10059 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
10060
10061         * mini-x86.c, mini-amd64.c: fix for case when xen support
10062         is disabled.
10063
10064 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
10065
10066         * mini-x86.c, mini-amd64.c: generate code to access tls items
10067         in a faster way for Xen systems.
10068
10069 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
10070
10071         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
10072         updates and compilation fixes for the OSX/x86 port, mostly from
10073         Geoff Norton <gnorton@customerdna.com>.
10074
10075 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10076
10077         * inssel.brg: faster interface call implementation
10078         to sync with the interface_offsets MonoVTable changes.
10079
10080 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
10081
10082         * mini.c: more verification checks.
10083
10084 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
10085
10086         * mini.c: added a few more verification checks.
10087
10088 2006-02-17      Neale Ferguson <neale@sinenomine.net>
10089
10090         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
10091         facility on the processor and use it if available.
10092
10093 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10094
10095         * driver.c, aot.c, mini.c: throw exception if the IL code is
10096         invalid or unverifiable.
10097
10098 2006-02-17  Raja R Harinath  <rharinath@novell.com>
10099
10100         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
10101         m.StructField.
10102
10103 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
10104
10105         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
10106
10107 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10108
10109         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
10110         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
10111         handling of instantiated generic valuetypes.
10112
10113 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
10114
10115         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
10116         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
10117         instead.
10118
10119         * generics.2.cs: Revert the nullable reftypes tests.
10120
10121 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
10122
10123         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
10124         using __builtin_frame_address (1) as it doesn't work in the presence
10125         of optimizations. Hopefully fixes #77273.
10126
10127         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
10128         -> generics.cs change as it doesn't work with some automake versions.
10129
10130 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10131
10132         * mini.c: handle systems that sue a different way to
10133         retrieve the stack address of the current thread.
10134
10135 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
10136
10137         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
10138         it specially in the makefile.
10139
10140         * generics.2.cs: Add tests for nullable reference types.
10141
10142 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10143
10144         * mini.c: always handle the case when mono_jit_init()
10145         is called in a thread different from the main thread,
10146         confusing libgc (bug #77309).
10147
10148 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
10149
10150         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
10151
10152 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10153
10154         * mini.c: change optimize_branches () to use a single loop
10155         and introduce a new optimization to simplify some range checks.
10156
10157 2006-02-03  Martin Baulig  <martin@ximian.com>
10158
10159         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
10160         and merged with debugger_thread_manager_add_thread().
10161         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
10162         inform the debugger about the main thread.
10163
10164 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
10165
10166         * basic.cs: Add test for div.un/rem.un constant folding.
10167
10168 2006-02-03  Neale Ferguson <neale@sinenomine.net>
10169
10170         * cpu-s390x.md: correct int_xor_imm length
10171
10172 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
10173
10174         * generics.2.cs: New test for #77442.
10175
10176         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
10177         #77442.
10178
10179 2006-02-02  Martin Baulig  <martin@ximian.com>
10180
10181         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
10182         <mono/metadata/mono-debug-debugger.h>   
10183
10184         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
10185
10186 2006-02-02  Martin Baulig  <martin@ximian.com>
10187
10188         * debug-debugger.h: New header file for debug-debugger.c.
10189
10190         * debug-debugger.c: Big API cleanup; don't run the managed Main()
10191         function is a separate thread anymore; add support for attaching.
10192
10193 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
10194
10195         * tramp-x86.c: Fix a warning.
10196
10197 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
10198
10199         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
10200         on very large methods.
10201
10202         * aot.c (load_patch_info): Fix a warning.
10203
10204 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
10205
10206         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
10207         mini-ops.h: alu membase optimizations.
10208
10209 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
10210
10211         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
10212         to speedup StringBuilder.
10213
10214 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
10215
10216         * dominators.c (mono_compute_natural_loops): Fix detection of
10217         loop body start blocks.
10218
10219         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
10220
10221 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
10222
10223         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
10224         #75145.
10225
10226 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
10227
10228         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10229
10230 2006-01-25  Martin Baulig  <martin@ximian.com>
10231
10232         * debug-debugger.c: Moved the `MonoDebuggerManager' and
10233         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
10234         started to cleanup this file a little bit.
10235
10236 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
10237
10238         * mini.c: optimize a codepath frequently happening in generics code.
10239
10240 2006-01-23  Martin Baulig  <martin@ximian.com>
10241
10242         * Makefile.am: Only compile debug-debugger.c on supported platforms.
10243
10244         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
10245         functions directly.
10246
10247         * driver.c: debug-debugger.c is only available if
10248         `MONO_DEBUGGER_SUPPORTED' is defined.   
10249
10250 2006-01-23  Martin Baulig  <martin@ximian.com>
10251
10252         * debug-debugger.c: Only enable this on platforms where the Mono
10253         Debugger is working (x86 and x86_64).
10254
10255 2006-01-21  Martin Baulig  <martin@ximian.com>
10256
10257         The Mono Debugger is now using the normal `mono' instead of the
10258         `mono-debugger-mini-wrapper' when executing managed code.
10259
10260         * debug-debugger.c: New file; previously known as
10261         debugger/wrapper/wrapper.c.
10262
10263         * debug-mini.c (mono_init_debugger): Removed.
10264
10265         * driver.c (mono_main): Added new `--inside-mdb' command line
10266         argument which is used when running inside the debugger.
10267
10268 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
10269
10270         * liveness.c (mono_analyze_liveness): Remove some unused data
10271         structures.
10272
10273 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
10274
10275         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
10276
10277 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
10278
10279         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
10280         depends on implementation details of monobitset.
10281
10282         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
10283         Fixes #77271.
10284
10285 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
10286
10287         * liveness.c: Update after monobitset changes.
10288
10289 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
10290
10291         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
10292
10293 2006-01-11 Neale Ferguson <neale@sinenomine.net>
10294
10295         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
10296
10297         * mini-s390x.c: Remove warning messages.
10298
10299 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
10300
10301         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
10302
10303 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
10304
10305         * generics.2.cs: Add ldelem/stelem_any test.
10306
10307 2006-01-10 Neale Ferguson <neale@sinenomine.net>
10308
10309         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
10310
10311 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
10312
10313         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
10314         
10315 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
10316
10317         * generics.2.cs: Reenable vtype tests.
10318
10319         * inssel-x86.brg: Remove an icorrect valuetype rule.
10320
10321 2006-01-06 Neale Ferguson <neale@sinenomine.net>
10322
10323         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
10324         initial support for OP_ABS.
10325
10326 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10327
10328         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
10329
10330 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10331
10332         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
10333         conversion and implement LADD/LSUB.
10334
10335         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
10336         architectures.
10337
10338 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10339
10340         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
10341
10342         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
10343         architectures.
10344
10345 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10346
10347         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
10348         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
10349         (stack walk problem).
10350
10351 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
10352
10353         * aot.c (mono_aot_load_method): Fix a warning.
10354
10355 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10356
10357         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
10358
10359 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10360
10361         * iltests.il: Add test for #77148.
10362
10363         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
10364         #77148.
10365
10366 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10367
10368         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
10369
10370 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10371
10372         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
10373         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
10374
10375         * basic-long.cs: Add lconv-to-r4/r8 tests.
10376
10377 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10378
10379         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
10380
10381         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
10382         here as on other archs.
10383
10384 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10385
10386         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
10387
10388 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10389
10390         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
10391         
10392         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
10393
10394         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
10395         instrument_prolog; Add memory_barrier instruction.
10396
10397 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
10398
10399         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
10400
10401 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
10402
10403         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
10404
10405         * aliasing.c inssel.brg: Fix warnings.
10406
10407         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
10408         could skip initialization of some parts of memory.
10409
10410         * mini.c mini-ia64.c: Fix warnings.
10411
10412         * inssel-sparc.brg: Add an implementation of lneg which actually works.
10413
10414 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
10415
10416         * aliasing.c (mono_build_aliasing_information): Add a workaround for
10417         a crash seen on sparc.
10418
10419         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
10420         
10421         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
10422
10423 2005-12-21 Neale Ferguson <neale@sinenomine.net>
10424
10425         * mini-ops.h: Add s390_backchain instruction
10426
10427         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
10428
10429         * cpu-s390.md: Add s390_backchain instruction
10430
10431         * mini-s390.c: Significant ABI changes
10432
10433         * mini-s390.h: Cater for zero length structures
10434
10435 2005-12-20 Neale Ferguson <neale@sinenomine.net>
10436
10437         * mini-s390.c: ABI fixes
10438
10439         * inssel-s390.brg: Remove debug statements
10440
10441         * cpu-s390.md: Fix length of ATOMIC_xx operations
10442
10443 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
10444
10445         * basic-float.cs: Add float<->long conversion tests.
10446
10447 2005-12-16 Neale Ferguson <neale@sinenomine.net>
10448
10449         * mini-s390.c: Fix LOCALLOC processing.
10450
10451         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
10452
10453 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
10454
10455         * iltests.il: Add tests for some opcodes not covered by the other
10456         tests.
10457
10458 2005-12-15 Neale Ferguson <neale@sinenomine.net>
10459
10460         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
10461         register loading for Tail processing; Correct trace output.
10462
10463         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
10464
10465         * cpu-s390.md: Correct size of jmp instruction. 
10466
10467 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10468
10469         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
10470
10471 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10472
10473         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
10474           Bring s390 up to current level.
10475
10476 2005-12-12  Zltan Varga  <vargaz@gmail.com>
10477
10478         * generics.2.cs: Disable the newly added tests as they do not work yet.
10479         
10480         * generics.2.cs: Add valuetype tests.
10481
10482 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
10483
10484         * basic-long.cs: Add i4->u8 test.
10485
10486         * objects.cs: Add tests for JIT intrinsic.
10487
10488         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
10489         optimizations lost by a mistake.
10490
10491 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
10492
10493         * basic-long.cs: Remove a test moved to objects.cs.
10494
10495         * arrays.cs: Add more array tests.
10496
10497 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
10498
10499         * arrays.cs: Add new tests for multi-dimensional arrays.
10500
10501 2005-12-06  Raja R Harinath  <rharinath@novell.com>
10502
10503         * Makefile.am (test_sources2): Add generics.2.cs.
10504         (EXTRA_DIST): Add test_sources2.
10505
10506 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
10507
10508         Support for boxing and unboxing nullable types as well as the
10509         isinst operation on nullables, per the CLI ammendment.
10510
10511         * inssel.brg (CEE_ISINST): Special case for nullable
10512
10513         * mini.c (handle_unbox_nullable): new method
10514         (handle_box): Special case for nullable types
10515         (mono_method_to_ir): Call handle_unbox_nullable in correct
10516         places.
10517
10518         * generics.2.cs: New test suite
10519
10520         * Makefile.am: Support for regression tests with generics.
10521
10522 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
10523
10524         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
10525         allocated to registers. Fixes #76800.
10526
10527 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
10528
10529         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
10530
10531 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
10532
10533         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
10534         of platforms.
10535
10536 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
10537
10538         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
10539         objects.cs.
10540
10541         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
10542         
10543         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
10544 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
10545
10546         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
10547         single precision before storing to a single precision location.
10548
10549 2005-11-28  Raja R Harinath  <rharinath@novell.com>
10550
10551         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
10552
10553 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
10554
10555         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
10556         correct files.
10557
10558         * basic.cs: Remove test_0_byte_compares test which was moved to
10559         objects.cs a long time ago.
10560
10561 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
10562
10563         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10564
10565 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
10566
10567         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
10568         handlers are called.
10569
10570         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
10571         throwing code.
10572
10573          * mini-ia64.c: Add support for the throw->branch exception 
10574         optimization.   
10575
10576         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
10577
10578 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10579
10580         * mini.c: Enabled "fastpath" deadce :-)
10581         
10582 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10583
10584         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
10585         alias analysis pass to support it.
10586         * mini.h: Likewise.
10587         * ssa.c: Likewise.
10588         * liveness.c: Likewise (liveness computation can use aliasing
10589         information to be more accurate).
10590         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
10591         moreover made so that "--compile-all" uses the given optimization
10592         flags and not the default ones.
10593         * aliasing.c: Alias analysis (new file).
10594         * aliasing.h: Likewise.
10595         * Makefile.am: added "aliasing.c" and "aliasing.h".
10596         
10597 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
10598
10599         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
10600         OP_L opcodes.
10601
10602 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
10603
10604         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
10605         fp >= end_of_stack exit condition, as it is not needed, and it might
10606         become true for fp eliminated frames.
10607
10608 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10609
10610         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
10611         coded offsets.
10612
10613 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
10614
10615         * mini-arm.c: fixed alignment of doubles/longs to match
10616         the C ABI (bug #76635).
10617
10618 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
10619
10620         * aot.c: fix compilation with --enable-minimal=aot.
10621
10622 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
10623
10624         * mini-arm.c: fixed compatibility with the new
10625         floating point emulator package for compares.
10626
10627 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
10628
10629         * mini.c : reverted sig->pinvoke changes (r51396-51397).
10630
10631 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
10632
10633         * mini-exceptions.c (print_stack_frame): Output to stderr.
10634         (mono_handle_native_sigsegv): Ditto.
10635
10636 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10637
10638         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
10639         OP_LCONV_TO_OVF_I implementation.
10640
10641         * mini-amd64.c: Add support for the throw->branch exception 
10642         optimization.
10643
10644         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
10645         when the catch clause catches a more general exception, i.e. Object.
10646
10647 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
10648
10649         * cpu-ia64.md: Remove unused opcodes.
10650
10651         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
10652         specific defines for architectures defining USE_SIGACTION.
10653
10654         * mini-ia64.c: Fix some warnings.
10655
10656         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
10657         version seemed to skip a frame.
10658
10659 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10660
10661         * mini.c: Clean up the usage of sig->pinvoke flag. Now
10662         only calls which are made to native code use this flag.
10663
10664 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10665
10666         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
10667         varargs methods as well.
10668         
10669         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
10670         which have save_lmf set. Reorganize methods prologs a bit.
10671
10672         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
10673         debugger to the proper place.
10674
10675 2005-10-29  Martin Baulig  <martin@ximian.com>
10676
10677         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
10678         when running inside the debugger until the debugger has support
10679         for it.
10680
10681 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10682
10683         * mini.h: Fix a warning.
10684
10685 2005-10-24  Miguel de Icaza  <miguel@novell.com>
10686
10687         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
10688         we expose publicly, this returns the string.
10689
10690 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
10691
10692         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
10693         with fp elimination.
10694
10695 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10696
10697         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
10698         native stacktrace using the glibc 'backtrace' function if available.
10699
10700 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
10701
10702         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
10703
10704         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
10705         handle SIGSEGVs received while in native code.
10706
10707         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
10708         code, call mono_handle_native_sigsegv which will abort the runtime
10709         after printing some diagnostics, instead of converting it into a
10710         confusing NullReferenceException.
10711
10712 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10713
10714         * cpu-pentium.md: Remove unused opcodes.
10715
10716 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
10717
10718         * mini-amd64.h (MonoLMF): Add rsp field.
10719
10720         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
10721         the lmf too.
10722
10723 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
10724
10725         * mini-codegen.c (get_register_spilling): Fix some warnings.
10726
10727 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
10728
10729         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
10730         elimination during exception handling. Enable fp elimination by
10731         default.
10732
10733         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
10734         elimination.
10735
10736 2005-10-16  Martin Baulig  <martin@ximian.com>
10737
10738         * mini-exceptions.c
10739         (mono_debugger_run_finally): New public method for the debugger.
10740
10741 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10742
10743         * debug-mini.c (mono_debug_init_method): Fix warning.
10744
10745         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
10746         the 'exname' parameter const to fix some warnings.
10747
10748 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
10749
10750         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
10751         introduced by the previous patch.
10752
10753 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
10754
10755         * basic-float.cs: Add test for precision of float arithmetic.
10756
10757         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
10758         when loading/storing single values from/to memory.
10759
10760         * mini.c (mono_jit_compile_method_with_opt): Create the function
10761         pointers in the correct domain.
10762
10763 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10764
10765         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
10766         introduced by previous patch.
10767         
10768         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
10769         when out_filter_idx is NULL.
10770
10771         * mini-exceptions.c: Don't run filter clauses twice during exception
10772         handling. Fixes #75755.
10773
10774 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10775
10776         * aot.c: Add support for ldflda wrappers.
10777
10778         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
10779         #75902.
10780
10781 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
10782
10783         * mini.c, mini.h: do not consider exception handlers blocks when
10784         setting up interface variables.
10785
10786 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
10787
10788         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
10789
10790 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
10791
10792         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
10793         causes a regression.
10794
10795         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
10796
10797 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
10798
10799         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
10800         of the OP_P definitions.
10801
10802         * TODO: Add a proposal for dealing with the CEE/OP mess.
10803
10804         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
10805         optimizations from the x86 port.
10806
10807         * cpu-amd64.md: Ditto.
10808
10809         * basic.cs basic-long.cs: Add tests.
10810
10811 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
10812
10813         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
10814         Patrik Torstensson's implementation of my exception-handling
10815         optimization idea, when the exception object is not used
10816         (bug #62150).
10817
10818 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
10819
10820         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
10821         of the mul_imm optimizations from the old jit.
10822
10823 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
10824
10825         * mini.c, liveness.c: patch by Patrik Torstensson and
10826         Zoltan Varga to improve performance in methods with
10827         exception clauses.
10828
10829 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10830
10831         * driver.c: Remove 'Globalization' entry from --version.
10832
10833 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
10834
10835         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
10836         there is a profiler interested in JIT events.
10837
10838         * aot.c: Load profile files produced by the AOT profiling module, and
10839         reorder methods based on the profiling info. Add a 'method_order' table
10840         to the AOT file to make mono_aot_find_jit_info work with the reordered
10841         methods.
10842
10843         * mini.h: Bump AOT file version info.
10844
10845 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
10846
10847         * mini-arm.h: work around what looks like a gcc bug when optimizations
10848         are enabled.
10849
10850 2005-09-28  Raja R Harinath  <rharinath@novell.com>
10851
10852         * Makefile.am (AM_CFLAGS): Don't use += to append inside
10853         conditionals.  Use ...
10854         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
10855
10856 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
10857
10858         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
10859         to determine the amount of memory to copy when passing valuetypes.
10860
10861         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
10862         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
10863
10864 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
10865
10866         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
10867         information about aot.
10868
10869 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
10870
10871         * *.c: Replace the use of {Enter,Leave}CriticalSection with
10872         macros. This will allow a deadlock debugger to easily be plugged
10873         in.
10874
10875 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
10876
10877         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
10878
10879 2005-09-27  Raja R Harinath  <rharinath@novell.com>
10880
10881         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
10882         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
10883         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
10884         ($(arch_built)) [CROSS_COMPILING]: Error out.
10885
10886 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
10887
10888         * aot.c: Add support for the no_special_static flag for classes.
10889
10890 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10891
10892         * Reapply reverted patches.
10893
10894         * *: Revert r50174 as well.
10895
10896         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
10897
10898 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10899
10900         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
10901
10902 2005-09-23  Miguel de Icaza  <miguel@novell.com>
10903
10904         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
10905         part of the SIG_HANDLER_SIGNATURE.  
10906
10907 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10908
10909         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
10910         statistics.
10911
10912         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
10913         introduced by previous patch.
10914
10915 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
10916
10917         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
10918         saved registers too.
10919
10920         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
10921         upon the information returned by get_call_info ().
10922         
10923         * mini-x86.c (add_float): Fix stack size calculation.
10924         (mono_arch_call_opcode): Rewrite this so it works based up the
10925         information returned by get_call_info ().
10926         (mono_arch_get_this_vret_args): Ditto.
10927
10928 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
10929
10930         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
10931         in cinfo to determine the registers which need to be used.
10932
10933 2005-09-20  Miguel de Icaza  <miguel@novell.com>
10934
10935         * driver.c (mono_main): Add --server and --desktop flags. 
10936
10937 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
10938
10939         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
10940         registers as global registers.
10941
10942         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
10943         longer needed with the new register allocator.
10944
10945         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
10946
10947         * cpu-ia64.md: Remove unused opcodes.
10948         
10949         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
10950         
10951 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
10952
10953         * cpu-amd64.md: Remove unused opcodes.
10954
10955         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
10956         needed with the new register allocator.
10957
10958         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
10959         reg-reg moves.
10960
10961 2005-09-16  Raja R Harinath  <rharinath@novell.com>
10962
10963         * Makefile.am (check-local): Don't invoke semdel-wrapper.
10964
10965 2005-09-16  Martin Baulig  <martin@ximian.com>
10966
10967         * exceptions-amd64.c
10968         (throw_exception): Don't call mono_debugger_throw_exception() if
10969         we're a rethrow - see the FIXME in the code.
10970
10971 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
10972
10973         * mini.c (mono_init_exceptions): This only works on some architectures.
10974         
10975 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
10976
10977         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
10978         on ia64.
10979
10980         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
10981
10982         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
10983         now in mini-exceptions.c.
10984
10985 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
10986
10987         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
10988         now in mini-exceptions.c.
10989
10990 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
10991
10992         * exceptions-x86.c: Applied patch from Patrik Torstensson 
10993         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
10994
10995         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
10996         code into mini-exceptions.c. Add some assertions to it.
10997
10998 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
10999
11000         * aot.c (emit_section_change): Applied patch from "The Software Team" 
11001         (<software@solmersa.com>). Fix as errors on windows.
11002
11003 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
11004
11005         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
11006         method info into the LMF.
11007
11008 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11009         
11010         * mini-ia64.c: Add proper unwind info for method epilogs.
11011
11012         * exceptions-ia64.c: Add some code to help debugging.
11013         
11014         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
11015
11016         * mini-exceptions.c: Fix warning.
11017
11018 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
11019
11020         * mini.c: Really fix build.
11021
11022         * mini-x86.c mini-amd64.c: Fix build.
11023
11024 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11025
11026         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
11027
11028         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
11029         some Interlocked methods as intrinsics.
11030
11031         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
11032         for Thread methods as well.
11033
11034         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
11035
11036         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
11037
11038         * mini-ia64.c mini-x86.c mini-amd64.c 
11039         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
11040         OP_MEMORY_BARRIER.
11041         
11042         * mini.c (mono_init_exceptions): Fix build breakage.
11043
11044 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
11045
11046         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
11047         of instructions. Use the new ia64_unw_op macros for emitting unwind
11048         info.
11049
11050         * mini.c (mono_init_exceptions): Initialize exception handling
11051         related trampolines at startup.
11052
11053 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
11054
11055         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
11056
11057 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
11058
11059         * mini.c: Handle type loading errors gracefully during compilation and
11060         throw the appropriate exception.
11061
11062 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
11063
11064         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
11065         for the mono binary.
11066
11067 2005-09-09  Martin Baulig  <martin@ximian.com>
11068
11069         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
11070         the release.
11071
11072 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
11073
11074         * mini-arm.h: use emulation for conv.r.un for the release.
11075
11076 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
11077
11078         * mini-arm.c, objects.cs: more fixes and tests for them.
11079
11080 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
11081
11082         * mini-arm.c: align structures to at least 4 bytes to be able
11083         to keep our current optimized memcpy.
11084
11085 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
11086
11087         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
11088
11089 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11090
11091         * mini.c: ignore SIGPIPE.
11092
11093 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
11094
11095         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
11096
11097         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
11098
11099 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
11100
11101         * mini.h: Add prototype for mono_allocate_stack_slots_full.
11102
11103 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
11104
11105         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
11106         exception handling support.
11107         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
11108         patch by Brian Koropoff <briank@marakicorp.com>).
11109
11110 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
11111
11112         * mini.c: revert another 'optimization' which breaks when
11113         items on the eval stack need to be saved at a basic block end
11114         (bug #75940).
11115
11116 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
11117
11118         * jit-icalls.c: for arrays, ensure we always provide
11119         lower bounds.
11120
11121 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
11122
11123         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
11124         
11125         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
11126
11127 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
11128
11129         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
11130         arguments in their original register.
11131
11132 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
11133
11134         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
11135         memset/memcpy.
11136
11137         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
11138         when ssapre is enabled.
11139
11140         * inssel-long.brg: Fix bug in previous patch.
11141
11142         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
11143         multiplication by a constant.
11144
11145 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
11146
11147         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
11148         icc.
11149
11150         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
11151         saving registers.
11152
11153 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
11154
11155         * inssel-arm.brg: apply changes tested by Brian Koropoff
11156         <briank@marakicorp.com>.
11157
11158 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
11159
11160         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
11161         
11162 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
11163
11164         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
11165         to the same register if dreg is just a base register.
11166         (print_ins): Improve printing of membase opcodes.
11167
11168         * inssel-x86.brg: Add optimized ldind(reg) rules.
11169
11170         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
11171
11172 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
11173
11174         * mini.c: when running under valgrind, set the stack bottom for
11175         the GC at the actual approximate stack for the app (fixes running
11176         mono with valgrind).
11177
11178 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
11179
11180         * mini.c: do no break at the first valuetype to init found
11181         (fixes bug #75791).
11182
11183 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
11184
11185         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
11186
11187 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
11188
11189         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
11190
11191 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
11192
11193         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
11194
11195 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11196
11197         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
11198
11199         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
11200         code.
11201
11202         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
11203         code.
11204
11205         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
11206         methods.
11207
11208 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
11209
11210         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
11211
11212 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11213
11214         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
11215         in the tail recursion optimization.
11216
11217         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
11218         debug info into the assembly file.
11219
11220         * iltests.il: Add test for filter regions.
11221
11222         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
11223         initial stack of filter regions. Fixes #75755.
11224
11225 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
11226
11227         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
11228         stack requirements.
11229
11230 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11231
11232         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
11233         the check for an already compiled method on non-ia64 platforms.
11234         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
11235         proper domain.
11236
11237         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
11238
11239         * inssel-x86.brg: Add some optimized call rules.
11240
11241 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
11242
11243         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
11244         method here.
11245
11246         * mini.h mini-trampolines.c: Pass the trampoline argument to 
11247         mono_arch_patch_delegate_trampoline.
11248
11249         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
11250
11251         * mini-trampolines.c: Fix build.
11252
11253         * mini-amd64.h: Add delegate trampolines.
11254
11255         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
11256
11257         * inssel-amd64.brg: Add optimized call rules.
11258         
11259         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
11260
11261         * inssel-ia64.brg: Add optimized ldind(reg) rules.
11262
11263 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
11264
11265         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
11266         change.
11267
11268         * mini-ia64.c: Remove LMF fixmes.
11269
11270         * mini-ia64.h: Remove most fields from LMF.
11271
11272         * inssel-ia64.brg (stmt): Fix unaligned access errors.
11273
11274         * mini-trampolines.c: Add support for IA64 function descriptors.
11275
11276         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
11277         for IA64 function descriptors.
11278
11279 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
11280
11281         * tramp-arm.c: patch the vtable for virtual calls. Added
11282         support code to register/unregister the LMF.
11283         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
11284         more LMF work.
11285
11286 2005-08-19  Dick Porter  <dick@ximian.com>
11287
11288         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
11289         bit value if needed.
11290
11291 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
11292
11293         * mini.c (mini_get_method): Move handling of wrapper data here.
11294
11295         * mini.c (mono_method_to_ir): Add support for dynamic methods.
11296
11297         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
11298         virtual.
11299
11300         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
11301         bblock->code does not remain empty.
11302
11303 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
11304
11305         * arrays.cs: Add regression test for #75832.
11306
11307         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
11308         rules. Fixes #75832.
11309
11310         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
11311         instruction scheduling.
11312
11313 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
11314
11315         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
11316
11317 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
11318
11319         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
11320
11321         * mini-codegen.c: Fix VC build.
11322
11323         * cpu-pentium.md: Increase length of atomic_exhange_i4.
11324
11325 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11326
11327         * mini.h: fix signature for mono_register_opcode_emulation.
11328
11329 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
11330
11331         * mini.c: Get rid of most of the helper_sig_... constants using
11332         mono_create_icall_signature ().
11333
11334 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
11335
11336         * jit-icalls.c (helper_ldstr): New helper function.
11337
11338         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
11339
11340         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
11341         throw, load the string using a helper call instead of creating a string object.
11342
11343         * aot.c: Update after LDSTR changes.
11344
11345         * mini.h: Bump AOT file version.
11346         
11347         * aot.c: Save class size info into the AOT file. Print more statistics during
11348         compilation.
11349
11350         * mini.h: Bump AOT file version.
11351
11352         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11353         ordering of disasm cases. Fixes #74957.
11354
11355 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
11356
11357         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
11358         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
11359         the generic code needed for the ARM port.
11360
11361 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
11362
11363         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
11364         inssel-arm.brg: more ARM features and fixes.
11365
11366 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
11367
11368         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
11369         ARM port work in progress.
11370
11371 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
11372
11373         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
11374
11375         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
11376
11377         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
11378
11379         * inssel.brg (mini_emit_memset): Add support for unaligned access.
11380
11381         * *-ia64.*: Ongoing IA64 work.
11382         
11383         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
11384
11385 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11386
11387         * TODO: Remove out-of-data todo stuff.
11388
11389         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
11390         dead code.
11391
11392         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
11393
11394         * mini.h: Bump corlib version.
11395
11396 2005-07-27  Martin Baulig  <martin@ximian.com>
11397
11398         * mini-codegen.c
11399         (create_copy_ins): Added `const unsigned char *ip' argument; set
11400         `copy->cil_code' from it.
11401
11402 2005-07-27  Martin Baulig  <martin@ximian.com>
11403
11404         * mini-exceptions.c (mono_handle_exception): Don't call
11405         mono_debugger_handle_exception() for filters.
11406
11407 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
11408
11409         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
11410         as well.
11411
11412 2005-07-26  Martin Baulig  <martin@ximian.com>
11413
11414         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
11415
11416         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
11417         helper_compile_generic_method() if the method is actually virtual
11418         and non-final.
11419
11420 2005-07-26  Martin Baulig  <martin@ximian.com>
11421
11422         * mini.c
11423         (trampoline_code): Renamed to `mono_trampoline_code' and made it
11424         public; this is now accessed directly by the debugger.
11425         (mono_generic_trampoline_code): Removed.
11426
11427         * debug-mini.c
11428         (mono_debug_init_method): Also add interncalls and wrappers.
11429
11430 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
11431
11432         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
11433
11434 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
11435
11436         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
11437
11438 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
11439
11440         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
11441
11442 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11443
11444         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
11445         getting TLS offsets on AMD64 too.
11446
11447 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
11448
11449         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
11450
11451 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
11452
11453         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
11454         inssel-arm.brg, mini-arm.h: ARM port work in progress.
11455
11456 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11457
11458         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
11459
11460         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
11461         to mini.c.
11462
11463         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
11464         mono_sparc_is_virtual_call ().
11465         
11466         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
11467
11468         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
11469         trampoline parameters.
11470
11471         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
11472         
11473         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
11474         to mono_arch_get_vcall_slot_addr.
11475
11476         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
11477         trampoline code.
11478
11479         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
11480
11481 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11482
11483         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
11484
11485 2005-07-19  Martin Baulig  <martin@ximian.com>
11486
11487         * exceptions-amd64.c (throw_exception): Call
11488         mono_debugger_throw_exception() here like we're doing it on i386.
11489
11490 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11491
11492         * mini-ia64.c: Add optimized TLS access support.
11493
11494 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
11495
11496         * mini-exceptions.c: Ongoing IA64 work.
11497
11498         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
11499
11500         * mini.c: Use the default optimization set when embedding. Fixes
11501         #75194.
11502
11503 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
11504
11505         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
11506         of trampolines to a separate file.
11507
11508         * mini-trampolines.c: New file.
11509
11510         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
11511         separate file.
11512         
11513         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
11514         amd64/ia64 code.
11515
11516         * mini-codegen.c: Fix cygwin build.
11517
11518 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
11519
11520         * mini.c: Add some minor changes needed by the IA64 port.
11521
11522         * *-ia64.*: Ongoing IA64 work.
11523
11524 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
11525
11526         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
11527         trampolines into arch-independent and arch-dependent parts.
11528
11529         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
11530
11531 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
11532
11533         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
11534
11535         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
11536         the xp-regalloc-branch for amd64.
11537
11538         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
11539         xp-regalloc-branch for x86.
11540
11541 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11542
11543         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
11544
11545 2005-07-06  Martin Baulig  <martin@ximian.com>
11546
11547         * mini.c
11548         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
11549         (mono_jit_runtime_invoke): Likewise.
11550
11551 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11552
11553         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
11554         on x86 too.
11555         
11556         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
11557         without loading their metadata. Reorganize the file format so exception handling+
11558         debug info is kept separate from normal method info. Create MonoJitInfo 
11559         structures for methods lazily.
11560
11561         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
11562         loading metadata.
11563         (x86_class_init_trampoline): Patch AOT class init trampolines too.
11564
11565         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
11566
11567         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
11568         in AOT code.
11569
11570         * mini.h: Bump AOT file version.
11571
11572 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
11573
11574         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11575
11576 2005-07-01  Raja R Harinath  <rharinath@novell.com>
11577
11578         * Makefile.am (check-local): Call semdel-wrapper.
11579
11580 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
11581
11582         * mini-x86.c: Revert the last change as it seems to break the build..
11583
11584 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11585
11586         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11587         
11588         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
11589
11590 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
11591
11592         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
11593         outside of the macro, so strange stuff doesn't happen with gcc4
11594         (NEW_AOTCONST_TOKEN): Likewise.
11595
11596 2005-06-28  Martin Baulig  <martin@ximian.com>
11597
11598         * mini.c (mini_class_is_system_array): New static method; use this
11599         instead of `klass->parent == mono_defaults.array_class' everywhere
11600         since this also works for the new generic array class.
11601
11602 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11603
11604         * inssel.brg: Remove warnings.
11605
11606 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
11607
11608         * mini-ia64.c: Ongoing IA64 work.
11609
11610         * basic-float.cs: Add float->i1 conversion test.
11611
11612         * iltests.il: Add conv.u4 test.
11613
11614 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
11615
11616         * inssel-long.brg: Fix bug caused by last change.
11617
11618 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
11619
11620         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
11621         BSDs.  Allows the x86 JIT to work on OSX86
11622
11623 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
11624
11625         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
11626         u4->i8 conversion.
11627
11628         * mini-ia64.c: Ongoing IA64 work.
11629
11630 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11631
11632         * mini-ia64.c: Ongoing IA64 work.
11633
11634         * driver.c: Clean up jit_code_hash as well when using --regression.
11635
11636         * inssel-long.brg: Fix long->i4/u4 conversion rules.
11637
11638         * basic-long.cs: Add tests for long->u4 conversion.
11639
11640 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
11641
11642         * mini.c: Take mono_get_domainvar out of macros. This makes sure
11643         that we do not depend on undefined C behavior: the order stuff
11644         gets evaluated within an expression. Fixes mono when compiled on
11645         GCC 4.
11646
11647 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
11648
11649         * *-ia64.*: Ongoing IA64 work.
11650
11651         * aot.c: Lower memory usage while loading AOT methods.
11652
11653         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
11654
11655         * mini.h: Bump AOT file format version.
11656
11657 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11658
11659         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
11660
11661 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
11662
11663         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
11664         not on callee assembly). Fixed some comments.
11665
11666 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
11667
11668         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
11669         it gets proper disassembly.
11670         (emit_method_info): Remove some dead code.
11671
11672         * mini.c (mini_method_compile): Allways allocate the GOT var in
11673         mono_method_to_ir for emulating opcodes.
11674
11675 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
11676
11677         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
11678         before freeing the code memory. Fixes #74990.
11679
11680         * objects.cs: Add regression test for #74992.
11681
11682         * liveness.c: Extend live ranges of arguments to the beginning of the
11683         method. Fixes #74992.
11684
11685         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
11686         so it points into the faulting instruction.
11687
11688 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
11689
11690         * jit-icalls.c (mono_imul_ovf): Add exception handling.
11691
11692         * *-ia64.*: Ongoing IA64 work.
11693
11694         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
11695
11696 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
11697
11698         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
11699
11700         * *-ia64.*: Ongoing IA64 work.
11701
11702 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
11703
11704         * basic-long.cs: Add tests for add/sub.ovf.
11705
11706         * basic.cs: Add tests for sub.ovf.
11707
11708         * *-ia64.*: Ongoing IA64 work.
11709
11710 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
11711
11712         * *-ia64.*: Ongoing IA64 work.
11713
11714         * basic.cs: Add conv.ovf.i4.un test.
11715
11716 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
11717
11718         * mini.c: (remove_block_if_useless) Fixed bug 75061.
11719         
11720 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11721
11722         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
11723
11724 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
11725
11726         * *-ia64.*: Ongoing IA64 work.
11727
11728 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11729
11730         * trace.[ch]:
11731         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
11732
11733 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
11734
11735         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
11736
11737 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
11738
11739         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
11740
11741         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
11742         of a call is callable by a near call.
11743
11744 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
11745
11746         * mini-ia64.c: Ongoing IA64 work.
11747
11748 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
11749
11750         * genmdesc.c: Make the generated array non-static.
11751
11752         * inssel-long.brg: Fix LSHR_IMM rule.
11753
11754         * *-ia64.*: Ongoing IA64 work.
11755
11756         * *-ia64.*: Ongoing IA64 work.
11757
11758 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11759
11760         * *-ia64.*: Ongoing IA64 work.
11761
11762         * *-ia64.*: Ongoing IA64 work.
11763         
11764         * mini-ia64.c: Ongoing IA64 work.
11765
11766         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
11767
11768 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11769
11770         * objects.cs basic-calls.cs: Move some tests to objects.cs.
11771         
11772         * objects.cs basic-long.cs: Move some tests to objects.cs.
11773
11774 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
11775
11776         * *-ia64.*: Ongoing IA64 work.
11777
11778         * iltests.il: Add a new test.
11779
11780         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
11781         newobj. Fixes #75042.
11782
11783 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
11784
11785         * *-ia64.*: Ongoing IA64 work.
11786         
11787         * *-ia64.*: Ongoing IA64 work.
11788         
11789         * *-ia64.*: Ongoing IA64 work.
11790
11791         * basic.cs objects.cs: Move tests accessing static variables as well.
11792
11793         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
11794
11795 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
11796
11797         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
11798
11799         * driver.c: Always print failed tests.
11800
11801         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
11802         frame pointer.
11803
11804         * *ia64*: Ongoing IA64 work.
11805
11806 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
11807
11808         * basic.cs: Add tests for add.ovf. Fix warnings.
11809
11810 2005-05-18  Miguel de Icaza  <miguel@novell.com>
11811
11812         * driver.c (mono_main): Avoid crash if no argument is passed to
11813         --break;  Do not use g_error, but f_printf.   And fix all other
11814         ocurrences of the same crash.
11815
11816 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
11817
11818         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
11819         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
11820         Fixes #74742.
11821
11822 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
11823
11824         * *-ia64.*: Add beginnings of IA64 backend.
11825
11826         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
11827
11828 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
11829
11830         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
11831         Fixes #74925.
11832
11833         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
11834
11835         * mini-amd64.c: Fix a warning.
11836
11837 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
11838
11839         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
11840         in float_neg. Fixes #74897.
11841
11842         * mini-amd64.c (emit_call): Fix another near call bug.
11843
11844 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
11845
11846         * declsec.c: Keep the appdomain information in the structure. Added a 
11847         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
11848         value gets overwritten).
11849         * declsec.h: Set the default MonoArray for the the stack to 6. Added
11850         an MonoAppDomain member to MonoSecurityFrame.
11851         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
11852         used in the stack walk. Now use a MonoArray which grow (double) when
11853         it gets full.
11854
11855 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
11856
11857         * mini.c: Re-enabled runtime cleanup, since running threads should
11858         now properly stop when exiting.
11859
11860 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
11861
11862         * mini-codegen.c: New file contaning the arch-independent local
11863         register allocator. Not used by any architectures yet.
11864
11865         * mini.h linear-scan.c: Merge some changes from the 
11866         mini-xp-local-regalloc branch.
11867
11868 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
11869
11870         * mini-amd64.c (emit_call): Fix calls to native functions when the
11871         runtime is compiled as a shared library. Fixes #74756.
11872
11873         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
11874         on a literal field. Fixes #74751.
11875
11876 2005-04-25  Raja R Harinath  <rharinath@novell.com>
11877
11878         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
11879
11880 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
11881
11882         * objects.cs: Add missing null casting test.
11883
11884 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
11885
11886         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
11887         in wrapper methods. Also rename 'address' variable to 'offset'.
11888
11889 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
11890
11891         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
11892         warnings.
11893         
11894         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
11895
11896         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
11897         work on windows.
11898
11899 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
11900
11901         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
11902
11903 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
11904
11905         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
11906         just the last bytes.
11907
11908 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
11909
11910         * aot.c (mono_compile_assembly): Fix warning.
11911
11912         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
11913         by the _MSC_VER stuff.
11914
11915 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
11916
11917         * inssel-long.brg: Fix #74588.
11918
11919         * cpu-amd64.md: Fix #74591.
11920
11921         * iltests.il: Add new regression tests.
11922
11923 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
11924
11925         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
11926         valuetype.
11927
11928 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
11929
11930         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
11931
11932         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
11933         from Bill Middleton <flashdict@gmail.com>.
11934
11935 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
11936
11937         * arrays.cs: Add new regression test. Fix warnings.
11938
11939 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
11940
11941         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
11942         and leakage in CKFINITE.
11943
11944         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
11945         this to a null op since it is called on amd64 too.
11946
11947         * exceptions-amd64.c (get_throw_trampoline): Align stack.
11948
11949         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
11950         body since this is not used on amd64.
11951         
11952         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
11953
11954         * mini-amd64.c: Remove obsolete fixmes.
11955
11956         * mini.c (print_method_from_ip): Fix debugging support.
11957
11958 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
11959
11960         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
11961         so that expressions that don't give much gain are not reduced.
11962         * ssapre.h: Likewise.
11963
11964 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
11965
11966         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
11967
11968         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
11969
11970         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
11971
11972 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
11973
11974         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
11975
11976         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
11977
11978 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
11979
11980         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
11981         stack touching.
11982
11983         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
11984
11985         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
11986
11987         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
11988
11989         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
11990         MONO_ARCH_USE_SIGACTION. Fixes #74252.
11991
11992         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
11993
11994         * mini-x86.c: Fix up stack overflow handling.   
11995
11996         * exceptions.cs: Add new regression test.
11997
11998 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
11999
12000         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
12001         mono_jit_thread_attach.
12002
12003         * mini.c (mono_method_to_ir): Verify called method is not abstract.
12004
12005 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12006
12007         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
12008         avoid calling constructors using callvirt.
12009
12010         * inssel.brg: Fix #74073.
12011
12012 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
12013
12014         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
12015         compilation with non-GCC compilers.
12016         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
12017         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
12018
12019 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
12020
12021         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
12022         klass->interface_offsets (will likely fix bug#74073).
12023
12024 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12025
12026         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
12027
12028 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
12029
12030         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
12031         to amd64_div_reg_size ().
12032         
12033         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
12034
12035 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
12036
12037         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
12038
12039 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12040
12041         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
12042
12043 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12044
12045         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
12046         
12047         * mini.c (mono_precompile_assembly): Load and precompile referenced
12048         assemblies as well. Fixes #74015.
12049
12050 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12051
12052         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
12053
12054 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
12055
12056         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
12057         a lot of checks and (anyway) permissions cannot work until corlib is 
12058         loaded.
12059
12060 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
12061
12062         * mini-ppc.c: fixed ABI issue on sysv/ppc.
12063
12064 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
12065
12066         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
12067         calls (fixes bug#72824).
12068
12069 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12070
12071         * mini.c: fix tail recursion elimination (see test in bug#73936).
12072
12073 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
12074
12075         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
12076         some fp functions in sse2 mode.
12077
12078 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
12079
12080         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
12081
12082 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
12083
12084         * mini.h mini.c: Add mono_get_jit_tls_key ().
12085
12086         * mini-x86.c: Enable fast TLS support on windows.
12087
12088 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
12089
12090         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
12091         * mini.c: Check for p/invoke method when generating code. If a
12092         p/invoke method, or it's class, isn't decorated with [Suppress
12093         UnmanagedCodeSecurity] then generate code to call System.Security.
12094         UnmanagedDemand (only if the security manager is active).
12095
12096 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12097
12098         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
12099         last change as it seems to cause strange crashes.
12100         
12101 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12102
12103         * *.c: handle unsafe function pointers where needed.
12104
12105 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12106
12107         * mini.c (mono_jit_free_method): Remove the fixme too.
12108
12109 2005-03-15  Miguel de Icaza  <miguel@novell.com>
12110
12111         * mini.c: As discussed, make the code actually free the delegate
12112         thunk now, to enable the debugging of delegate problems, use
12113         MONO_DEBUG=1 when running Mono. 
12114
12115         This takes also care of parts of the leaks as seen by Joe.
12116
12117 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
12118
12119         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
12120         thread_tls_offset calculation.
12121
12122 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
12123
12124         * declsec.c: Reworked linkdemand checks for icall. The previous code
12125         was using the declaration code (untrusted) and didn't work as expected
12126         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
12127         specific case.
12128
12129 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
12130
12131         * iltests.il: Add new localloc test.
12132
12133         * mini-amd64.c: Handle large stack allocations the same way as on
12134         windows if stack overflow handling is working.
12135         
12136         * mini-amd64.c: Allocate the signal stack using mmap.
12137
12138         * mini.c (sigsegv_signal_handler): Fix reading of context.
12139
12140         * mini-exceptions.c: Fix up stack overflow handling.
12141
12142         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
12143
12144         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
12145
12146         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
12147
12148         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
12149
12150         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
12151         tramp_init functions as they are no longer needed.
12152
12153 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
12154
12155         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
12156         
12157         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
12158
12159         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
12160         
12161         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
12162         support that now.
12163
12164         * mini-ops.h: Add OP_LMUL_IMM.
12165
12166         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
12167         long mul/div opcodes as intrinsic.
12168
12169         * mini-amd64.c (emit_call): Handle the case when the callee might be
12170         an AOT method.
12171
12172 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
12173
12174         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
12175         extra safe.
12176         
12177         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
12178
12179         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
12180
12181 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
12182
12183         * mini.c (mono_codegen): Don't leak here, to help people running
12184         monogrind.
12185
12186 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
12187
12188         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
12189         conversions in sse2 mode.
12190
12191         * basic-float.cs: Add regression test.
12192         
12193         * mini-amd64.c: Reenable sse2.
12194
12195 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12196
12197         * mini-amd64.c: Disable sse2 until some regressions are fixed.
12198
12199 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
12200
12201         * driver.c: Copyright text should include 2005.
12202         
12203 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12204
12205         * cpu-amd64.md (load_membase): Fix more max lengths.
12206
12207 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
12208
12209         * cpu-amd64.md (load_membase): Fix max length.
12210
12211         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
12212
12213         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
12214
12215         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
12216         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
12217
12218         * basic-float.cs: Add rounding regression test.
12219
12220         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
12221
12222 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
12223
12224         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
12225         structures in registers for pinvoke wrappers.
12226
12227 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
12228
12229         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
12230
12231 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
12232
12233         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
12234         wrapper to mono_jit_thread_attach.
12235
12236         * mini.c (mini_jit_thread_attach): New jit icall.
12237
12238         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
12239         native->managed wrappers.
12240
12241         * exceptions.cs: Add new regression test.
12242
12243         * mini.c (optimize_branches): Check regions in the cbranch to throw
12244         block case as well. Fixes #73242.
12245
12246 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12247
12248         * mini.c: thread safety fixes.
12249
12250 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
12251
12252         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
12253         patching stuff, since delegates use jump trampolines so there is
12254         no caller.
12255
12256         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
12257         jump trampolines.
12258         
12259         * tramp-amd64.c: Fix build.
12260
12261         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
12262         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
12263
12264         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
12265         Rename this to mono_arch....
12266         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
12267
12268         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
12269
12270         * mini-amd64.c (emit_call): If both the caller and the callee is
12271         guaranteed to have 32 bit addresses, emit a normal call.
12272
12273         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
12274
12275         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
12276         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
12277         method_ptr inside delegates.
12278
12279 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
12280
12281         * mini.c (mono_jit_free_method): Free the method info even if the native code is
12282         invalidated. Fixes #73001.
12283
12284         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
12285
12286         * mini-x86.c: Only use stdcall for pinvokes on windows.
12287
12288 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
12289
12290         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
12291         * mini-x86.c: remove unreliable __thread var offset detection,
12292         use the correct accessors and enable by default.
12293
12294 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12295
12296         * mini.c (mono_jit_free_method): Fix memory leak.
12297
12298 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
12299
12300         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
12301
12302 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
12303
12304         * cpu-amd64.md: Fix lengths of atomic opcodes.
12305
12306 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
12307
12308         * driver.c: try to not imply using ICU is any good.
12309
12310 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
12311
12312         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
12313         functions as inline ops.
12314
12315         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
12316         some Interlocked functions as inline ops.
12317
12318         * mini.c (move_basic_block_to_end): Fix bug in last patch.
12319
12320         * mini.h (MonoBasicBlock): Reorganize fields a bit.
12321
12322         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
12323
12324         * mini.c: Add support for OP_NOT_TAKEN.
12325
12326         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
12327         structures in registers for pinvoke wrappers.
12328
12329         * mini-amd64.c: Fix warnings.
12330
12331 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
12332
12333         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
12334
12335         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
12336
12337         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
12338         address instead of loading the address from it.
12339
12340         * mini-x86.c: Add support for returning small structs in registers
12341         on Win32. Fixes part of #70864.
12342         
12343 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
12344
12345         * trace.c (get_token): Improve error checking.
12346
12347 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12348
12349         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
12350
12351 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
12352  
12353         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
12354         it can be reused for MonoClass.
12355         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
12356         _LINKDEMAND.
12357
12358 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
12359
12360         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
12361         instead of a MonoReflectionMethod. The method information wasn't used
12362         when displaying SecurityException details (but will be now).
12363
12364 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
12365
12366         * Makefile.am : windows build fix.
12367
12368 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12369
12370         * iltests.il: Add new regression test.
12371
12372         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
12373         #72522.
12374
12375 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
12376  
12377         * mini.c: Moved linkdemand check into helper function check_linkdemand
12378         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
12379         LDFTN, LDVIRTFTN).
12380
12381 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
12382
12383         * declsec.c: Added statistics counter for different kinds of 
12384         LinkDemands.
12385         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
12386         (and commented) declaration.
12387         * mini.c: Added statistics counter for security Demand code 
12388         generation. Added display of security statistics.
12389
12390 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
12391
12392         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
12393         Fix compilation errors under gcc-2.95.
12394
12395 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
12396
12397         * mini.c, driver.c: Use the new jit trampoline hashtable
12398
12399 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12400
12401         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
12402
12403 2005-02-11  Martin Baulig  <martin@ximian.com>
12404
12405         * debug-mini.c (mono_debug_close_method): Free the line number array.
12406
12407 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12408
12409         * aot.c: Break up large methods into smaller ones. Share GOT slots for
12410         icalls.
12411
12412         * mini.h: Bump AOT file format version. 
12413
12414 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
12415
12416         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
12417         APTC and P/Invoke.
12418         * declsec.h: Added macros to get/set lazyly initialized security 
12419         informations about assemblies. Added new enum for different type of
12420         possible LinkDemand violation. Added function to check LinkDemands.
12421         * mini.h: Added a field to MonoCompile to hold any security violation
12422         detected when JITting a method (so it can be thrown later).
12423         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
12424         and CEE_CALLVIRT. Added code to throw exception at the end of
12425         mini_method_compile (note: the exception is unhandled right now).
12426
12427 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
12428
12429         * mini.c, jit-icalls.c: use the managed implementation of
12430         memset for initobj and memset, to avoid managed <-> unmanaged
12431         transitions.
12432
12433 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12434
12435         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
12436         optimization if it would need a GOT var.
12437
12438         * basic.cs: Add tests for constant propagation and switch statements.
12439
12440         * ssa.c: Fix out-of-range constant propagation and switch statements.
12441
12442 2005-02-09    <vargaz@freemail.hu>
12443
12444         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
12445
12446 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
12447
12448         * cpu-amd64.md (load_membase): Fix max length of load_membase.
12449
12450 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12451
12452         * mini.c: update to new signature of mono_class_get_allocation_ftn().
12453
12454 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
12455
12456         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
12457         arithmetic operations.
12458
12459 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
12460
12461         * mini-ppc.c: add a workaround for broken user code that
12462         DllImports vararg functions with non-vararg signatures.
12463
12464 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12465
12466         * mini.c (mono_jit_compile_method_inner): Add detection and a 
12467         meaningfull error message for assemblies written in Managed C++.
12468
12469         * tramp-amd64.c mini-amd64.h: Add support for 
12470         create_trampoline_from_token ().
12471
12472         * aot.c mini-x86.c abcremoval.c: Applied patch from
12473         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
12474
12475 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
12476
12477         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
12478         which takes a MonoImage/token as parameter instead of a MonoMethod.
12479
12480         * aot.c: Use the new trampoline for initializing vtables.
12481
12482         * aot.c: Add support for ldfld/stfld_remote wrappers.
12483
12484         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
12485         rules for compare <MEM>, IMM.
12486
12487         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
12488
12489         * aot.c: Handle inherited finalizers correctly.
12490
12491 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
12492
12493         * inssel.brg (stmt): Add a missing _setup_... ().
12494
12495         * aot.c: Save some parts of the class state to the AOT file and use it
12496         to recompute that state when a class is initialized.
12497
12498         * mini.c: Install AOT hooks into the runtime.
12499
12500         * mini.h: Bump AOT file format version.
12501         
12502         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
12503         Fixes #72148.
12504
12505         * iltests.il: Add new test.
12506
12507 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12508
12509         * mini.c: fix typo.
12510
12511 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
12512
12513         * mini.c: setup the statistical profiler in the thread attach
12514         callback to cope with the new single thread code.
12515
12516 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
12517
12518         * mini-ppc.c: ensure we have enough room for the profiler
12519         calls (fixed bug#72084).
12520
12521 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
12522
12523         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
12524         it.
12525
12526 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12527
12528         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
12529
12530 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12531
12532         * ssapre.c: Fixed an issue with down safety (this allows IronPython
12533         to succesfully execute parrotbench).
12534         * ssapre.h: Likewise.
12535
12536 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12537
12538         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
12539         variable for stores to method arguments (fixes a SSAPRE issue).
12540
12541 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12542
12543         * mini.c: handle value types in dup, fixes gen-112.cs.
12544
12545 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
12546
12547         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
12548         sequence for calls in dynamic methods to avoid thunks.
12549
12550 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12551
12552         * mini.c: correctly remove dynamic methods from the hashtable.
12553
12554 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12555
12556         * driver.c: Disabled SSAPRE until fix the bug that appears
12557         in IronPython's parrotbench.
12558
12559 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
12560
12561         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
12562
12563         * mini.c (mono_method_to_ir): Revert the previous change.
12564         
12565         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
12566         when AOT compiling.
12567
12568         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
12569         mono_jit_info_table_find () etc. when running under valgrind.
12570
12571         * inssel.brg: Fix warnings.
12572
12573         * mini-exceptions.c: Fix warnings.
12574
12575 2005-01-31  Martin Baulig  <martin@ximian.com>
12576
12577         * driver.c (compile_all_methods_thread_main): Don't try to compile
12578         generic methods or anything which has type parameters.
12579
12580 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
12581
12582         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
12583
12584         * TestDriver.cs: Add --verbose flags.
12585
12586         * graph.c ssa.c: Fix 64 bit warnings.
12587         
12588         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
12589         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
12590         Fix 64 bit warnings.
12591
12592         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
12593         variable not spotted by gcc.
12594         
12595         * mini-amd64.c inssel-amd64.brg: Applied patch from  
12596         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
12597         X86_COMPARE_MEMBASE opcodes.
12598
12599         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
12600
12601 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
12602
12603         * *: MonoMethod->signature might be NULL now. You *MUST* use
12604         mono_method_signature.
12605
12606 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12607
12608         * driver.c (compile_all_methods_thread_main): Compile the methods
12609         without invoking cctors.
12610
12611 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12612
12613         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
12614         * basic-calls.cs: test for the above.
12615
12616 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12617
12618         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
12619         MonoJitInfo changes.
12620
12621 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
12622
12623         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
12624         eagerly if it contains dynamic methods.
12625         
12626         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
12627
12628         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
12629         trace, it is now computed by an icall from trace_ips.
12630         
12631         * mini-exceptions.c: Fix a warning.
12632
12633 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
12634
12635         * mini-exceptions.c: don't bother getting stack trace info if
12636         it's not going to be used.
12637
12638 2005-01-27  Raja R Harinath  <rharinath@novell.com>
12639
12640         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
12641         ssapre-mini-ops.h.
12642
12643 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
12644
12645         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
12646
12647         * aot.c: Avoid calling mono_method_get_header () if not needed.
12648
12649         * mini.h: Bump AOT file format version.
12650         
12651         * mini.c (mono_emit_native_call): Allocate a GOT var here.
12652
12653         * mini.c (mono_print_tree): Print more info for calls.
12654
12655 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
12656
12657         * declsec.h: Remove warning by adding missing include for marshal.h
12658
12659 2005-01-26  Martin Baulig  <martin@ximian.com>
12660
12661         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
12662         `ip' twice.
12663
12664 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
12665
12666         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
12667         flags.
12668
12669         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
12670
12671         * aot.c (mono_compile_assembly): Fix a warning.
12672
12673 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
12674
12675         * declsec.c: Look for security attributes on the original MonoMethod 
12676         (and not the wrapped one). This fix permissions on icalls.
12677
12678 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12679
12680         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12681
12682         * mini.c (mono_allocate_stack_slots): Add a fixme.
12683
12684         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12685
12686 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12687
12688         * inssel.brg: optimize casts of sealed types (more
12689         optimizations waiting for fixes in remoting).
12690
12691 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12692
12693         * inssel.brg (stmt): Add another dummy rule.
12694
12695         * driver.c: Fix warnings.
12696
12697         * driver.c (mono_main): If running under valgrind, instruct glib to use
12698         the system allocation functions so valgrind can track the memory
12699         allocated by the g_... functions.
12700
12701         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
12702
12703         * mini-ops.h: Add OP_DUMMY_STORE opcode.
12704
12705         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
12706
12707         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
12708         variables in try regions.
12709
12710         * mini.c (mini_method_compile): Don't disable optimizations on large
12711         methods when AOT compiling.
12712
12713         * mini.c (mono_allocate_stack_slots): New arch independent method to 
12714         allocate stack slots. Not yet used.
12715
12716 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
12717
12718         * debug-mini.c (mono_debug_close_method): Plug some leaks.
12719
12720 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
12721
12722         * mini-ppc.c: make the branch info relative as the code
12723         buffer can be reallocated.
12724
12725 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
12726
12727         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
12728         * driver.c: Removed the AOT/security restriction. Now initialize the
12729         security manager (in metadata) if --security is used.
12730         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
12731         rather than the pointer to declarative security, when AOT is used.
12732
12733 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
12734
12735         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
12736         basic blocks, reduced intrinsic exception throwing code size.
12737
12738 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
12739
12740         * driver.c (mini_usage): Reorder the usage screen.
12741
12742 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
12743
12744         * mini.c (mono_resolve_patch_target): Fix warning.
12745
12746 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
12747
12748         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
12749         previous patch.
12750
12751         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12752
12753         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
12754         breaks the amd64 build.
12755
12756         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
12757         register allocation. Fixes #71454.
12758
12759         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12760
12761         * arrays.cs: Add new regression test.   
12762
12763 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12764
12765         * ssapre.c: Turned usage of snprintf to GString.
12766         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
12767         (I left it on by mistake in my previous commit).
12768
12769 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
12770
12771         * mini.c, cfold.c, basic-calls.cs: preserve side effects
12772         on cond branch optimization (fixes bug# 71515).
12773
12774 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12775
12776         * abcremoval.c: Fixed bug 71062.
12777         * abcremoval.h: Likewise.
12778
12779 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12780
12781         * mini.c: Added a new functionality to optimize_branches, the removal
12782         of useless basic blocks, and fixed some problem in the removal of
12783         critical edges; some utility functions added for both purposes.
12784         * ssapre.c: Added complex expression support, and fixed bug 70637.
12785         * ssapre.h: Likewise.
12786         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
12787         enabled in SSAPRE.
12788         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
12789         * driver.c: Re-enabled SSAPRE.
12790
12791 2005-01-19  Martin Baulig  <martin@ximian.com>
12792
12793         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
12794         the result of mono_get_method_constrained().
12795
12796 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
12797
12798         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
12799         manager.
12800
12801 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
12802
12803         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
12804         be detected.  Fixes #59296.
12805
12806 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12807
12808         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
12809         which can happen. Fixes #71361.
12810
12811 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12812
12813         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
12814         manager.
12815
12816 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12817
12818         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
12819         appdomain-unload.exe to fail.
12820         
12821         * mini.c: Fix some memory leaks.
12822
12823 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
12824
12825         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
12826         Fixed bug and sped up some codepaths.
12827
12828 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12829
12830         * mini.c: Fix some memory leaks.
12831
12832         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
12833         conversion.
12834
12835         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
12836
12837         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
12838         #71320.
12839
12840         * iltests.il: Add regression test for #71320.
12841
12842 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
12843
12844         * mini.c (mono_codegen): Fix installation of profiler hooks.
12845
12846         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
12847
12848 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12849
12850         * mini.h, mini.c, cfold.c: optimize access to enum
12851         readonly fields, too. Eval conditional branches if possible
12852         to perform unreachable code removal in more cases.
12853
12854 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
12855
12856         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
12857
12858         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
12859         code manager.
12860
12861         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
12862         WinXP DEP. Fixes #71244.
12863
12864 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
12865
12866         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
12867
12868 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
12869
12870         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
12871
12872 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
12873
12874         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
12875         changes.
12876
12877         * mini.h: Bump AOT version.
12878
12879         * mini.h (MonoCompile): Change exvar to a hash table.
12880
12881         * mini.c: Allocate a separate exvar for each handler block.
12882
12883         * mini.c: Get rid of the computation of filter_lengths, its not needed.
12884
12885         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
12886         ex var with the pending exception and only throw if the two are equal.
12887         Fixes #68552.
12888         
12889         * exceptions.cs: Add tests for rethrow and nested catch clauses.
12890
12891         * mini-x86.c: Fix warnings.
12892
12893         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
12894         used by all the ports now.
12895
12896         * aot.c: Add write-symbols and save-temps options.
12897
12898 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
12899
12900         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
12901
12902 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
12903
12904         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
12905         operations.
12906
12907         * tramp-s390.c: Check vtable slot belongs to the domain.
12908
12909         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
12910         as per other platforms.
12911
12912         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
12913
12914 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
12915
12916         * driver.c: we don't run the Main() code in a subthread anymore.
12917
12918 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
12919
12920         * mini.c: added experimental rtc support in the statistical
12921         profiler: if the user has the permission, more accurate statistics
12922         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
12923         The MONO_RTC value must be restricted to what the linux rtc allows:
12924         power of two from 64 to 8192 Hz.
12925
12926 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
12927
12928         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
12929
12930 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
12931
12932         * mini-ppc.c: better icache flush for smp.
12933
12934 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
12935
12936         * mini-amd64.c (emit_move_return_value): Fix memory leak.
12937
12938         * mini-x86.c (get_call_info): Add the get_call_info () code from the
12939         amd64 port, not yet used.
12940
12941 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
12942
12943         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
12944         a struct type.
12945
12946 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
12947
12948         * driver.c: Added --security option to activate the security manager.
12949         Right now this will allow code generation for declarative demands and
12950         is disabled when AOT is specified.
12951         * mini.c: Add code generation for declarative security demands.
12952         * mini.h: Add mono_use_security_manager as an extern gboolean.
12953
12954 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
12955
12956         * aot.c (mono_compile_assembly): Speed up compilation a bit by
12957         emitting more dense assembly code.
12958
12959         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
12960         exception throwing stuff.
12961
12962 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
12963
12964         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
12965         dead code.
12966
12967         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
12968         left in by mistake.
12969
12970         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
12971         fixed.
12972
12973         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
12974
12975         * tramp-*.c: Only patch vtable slots if the object is in the current
12976         domain. Fixes appdomain-unload.exe.
12977
12978         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
12979         
12980         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
12981         x86 branch.
12982
12983 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
12984
12985         * mini.c (reverse_branch_op): New helper function.
12986
12987         * mini.c (optimize_branches): Run the new optimization only on 
12988         platforms which support it. Also reverse all kinds of branches.
12989
12990         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
12991
12992         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
12993         a throw statement.
12994
12995         * mini.c (optimize_branches): Reverse not-equals branches if the false
12996         bblock is a throw. This happens a lot of time with argument checking in
12997         corlib.
12998
12999         * mini.c (mono_codegen): Add support for placing basic blocks after
13000         the function epilogue.
13001
13002         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
13003         function epilogue.
13004         
13005 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
13006
13007         * mini.c (setup_stat_profiler): Only set this up if the platform
13008         supports ITIMER_PROF.
13009
13010 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13011
13012         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
13013         previous patch.
13014
13015         * inssel.brg: Fix a warning.
13016
13017 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
13018
13019         * mini.c: added support for statistical profiler 
13020         (run with: --profile=default:stat).
13021
13022 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
13023
13024         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
13025
13026         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
13027
13028         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
13029         related to global registers from the amd64 port.
13030
13031 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
13032
13033         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
13034
13035         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
13036         with global registers.
13037         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
13038
13039         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
13040
13041 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
13042
13043         * debug-mini.c (encode_value): Fix off-by-one.
13044
13045         * aot.c (encode_value): Likewise.
13046
13047         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
13048
13049 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
13050
13051         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
13052         AOT.
13053
13054         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
13055         
13056         * aot.c (emit_method_info): Increase size of temp buffer.
13057
13058         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
13059         the AOT case.
13060
13061 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
13062
13063         * aot.c (emit_method_info): Fix build.
13064         
13065         * aot.c: Further rework of the AOT file format to reduce the size of
13066         the method info data.
13067
13068         * mini.h: Bump AOT file format version.
13069
13070 2004-12-27  Martin Baulig  <martin@ximian.com>
13071
13072         * mini.c (mini_get_method): New static method; call
13073         mono_get_method_full() and mono_get_inflated_method().
13074         (mono_method_to_ir): Use mini_get_method() instead of
13075         mono_get_method_full(). 
13076
13077 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
13078
13079         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
13080
13081 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
13082
13083         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
13084
13085         * inssel-amd64.brg: Add some optimization rules.
13086
13087 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
13088
13089         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
13090         standard not GC'd stuff is fine.
13091
13092 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
13093
13094         * aot.c: Rework the AOT file format to get rid of most of the global
13095         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
13096
13097         * mini.h: Bump AOT file format version.
13098         
13099 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
13100
13101         * mini.h: Bump AOT file format version.
13102
13103         * aot.c (mono_aot_is_got_entry): New function to determine if an 
13104         address is inside a GOT.
13105
13106         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
13107
13108         * cpu-pentium.md: Increase the maximum size of some instructions which
13109         might involve a got access.
13110         
13111         * mini.c (get_method_from_ip): Another debug helper function.
13112
13113         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
13114         when got var accesses are created during the decompose phase.
13115
13116         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
13117
13118         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
13119         argument mini_compile_method and to MonoCompile, and use this to
13120         determine whenever a given method is compiled for AOT. This allows the
13121         other methods compiled during AOT compilation to be free of AOT stuff,
13122         so the backends does not need to add special support for them by
13123         creating a fake GOT etc.
13124
13125         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
13126         longer needed.
13127
13128 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
13129
13130         * mini.c (mono_method_to_ir): It turns out that some of the
13131         x-appdomain wrappers are lax with types, so just ignore this for
13132         all wrappers.
13133
13134         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
13135         at the vtable->klass. If it is non-shared code we can just use the
13136         vtable.
13137
13138 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
13139
13140         * mini-ppc.c: access MonoDomain from tls, too.
13141
13142 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
13143
13144         * declsec.c: Removed unused variable (and related warning ;-)
13145
13146 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
13147
13148         * iltests.il: New test for LDELEMA on an array of ref types.
13149
13150         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
13151         all ldelema's on reftypes.
13152         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
13153         it was the wrong place to put it.
13154
13155         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
13156         register to pop to make this cleaner, at the request of Paolo.
13157
13158 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13159
13160         * mini-ops.h (OP_GETHASHCODE): New op.
13161
13162         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
13163
13164         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
13165         operation.
13166
13167         For a microbenchmark, this reduces the cost of Hashtable.get_Item
13168         by 25%.
13169         
13170         * mini-x86.c (mono_arch_output_basic_block): Rather than
13171
13172         add ebp, 4
13173
13174         Emit
13175
13176         pop edx
13177
13178         The first is 3 bytes while the second is 1. This saves 36 kb on
13179         mscorlib, quite a big saving. When bootstraping mcs, I was able to
13180         see a small boost because of icache locality.
13181
13182         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
13183
13184 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
13185
13186         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
13187         started code sharing with the generic code.
13188
13189 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
13190
13191         * mini-ppc.c, cpu-g4.md: added code for direct access to
13192         tls data slots.
13193
13194 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
13195
13196         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
13197          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
13198         to OP_TLS_GET.
13199
13200 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
13201
13202         * declsec.c|h: Added functions to cache the declarative stack modifiers
13203         in MonoJitInfo and to create a security frame from a MonoJitInfo 
13204         structure.
13205         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
13206         created. Register internal calls for System.Security.SecurityFrame::
13207         _GetSecurityFrame and _GetSecurityStack.
13208         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
13209         the definitions for the new stack walk/callback mechanism.
13210         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
13211         first security frame for LinkDemands and InheritanceDemands) and
13212         GetSecurityStack for Demands. Both use the new mono_walk_stack code
13213         from lupus.
13214         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
13215         walk initialization (lupus).
13216
13217 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13218
13219         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
13220         idiom.
13221         (handle_loaded_temps): Do not create a temporary variable for
13222         things that we know are temps. They will never be modified.
13223         (mono_spill_call): Set MONO_INST_IS_TEMP
13224         (mono_emulate_opcode): ditto
13225         (emit_tree): ditto
13226         (mono_method_to_ir.CEE_DUP): ditto
13227
13228 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
13229
13230         * mini.c (type_to_eval_stack_type): Make this handle the void type
13231         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
13232         (emit_tree): use ip_in_bb to special case some common idioms
13233         Update all callers to pass in the IP.
13234         (mono_method_to_ir): Make CEE_CALL* do the above as well.
13235
13236         This gives us a nice 2% speedup in mcs bootstrap.
13237
13238         * mini-x86.c (peephole_pass): Peephole pass to make
13239         mov  [foo], eax
13240         push [foo]
13241
13242         into
13243
13244         mov [foo], eax
13245         push eax
13246
13247         * mini.c (ip_in_bb): new method.
13248         (mono_method_to_ir): use this method rather than doing the hash
13249         lookup ourselves.
13250
13251         * linear-scan.c (mono_linear_scan): When expiring actives, you
13252         don't need to keep around variables that expire on this
13253         instruction. This makes it so that:
13254              a = b + 1
13255         will turn into:
13256              store (ebx add (ebx, 1))
13257         which will become
13258              add ebx, 1
13259
13260 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
13261
13262         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
13263         combination to avoid doing two copies. Fix up problems with previous
13264         patch.
13265
13266         * mini.c: Fix 64 bit warnings.
13267
13268         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
13269
13270 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
13271
13272         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
13273         changes from the x86 code.
13274
13275         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
13276
13277 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
13278
13279         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
13280         throwing code to reduce its size, unify the AOT and non-aot code and 
13281         get rid of relocations in the AOT case.
13282
13283         * mini-x86.h mini.c exceptions-x86.c 
13284         (mono_arch_get_throw_corlib_exception): New arch specific function to 
13285         raise corlib exceptions which doesn't require relocations in the 
13286         caller.
13287
13288         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
13289
13290 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
13291
13292         * mini.c (mono_emit_method_call): Only allocate the got var when it is
13293         needed.
13294
13295         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
13296         in the AOT case.
13297
13298 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13299
13300         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
13301         with add function when used from Inc/dec atomic 
13302         functions. Re-enabled optimization on x86.
13303         * mini-ops.h: renamed atomic_add functions to
13304         allow _add to match the Interlocked::Add and
13305         _add_next to match Interlocked::Inc/Dec.
13306
13307 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
13308
13309         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
13310         linking of BBs to the end BB, and enabled SSAPRE also with
13311         consprop and copyprop (which was prevented by that bug).
13312
13313 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13314
13315         * mini-x86.c: disabling the Interlocked optimizing code. 
13316
13317 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13318
13319         * aot.c (load_aot_module): Move reading of got_addr after the AOT
13320         file version check.
13321         
13322 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13323
13324         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
13325         interlocked optimization due lack of support on x86, rewrote 
13326         exchange to take into account that base may be in eax.
13327         
13328         xsp works again; activated Interlocked optimizing code.
13329         
13330 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13331
13332         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13333
13334 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
13335
13336         * mini-ops.h: Add new opcodes.
13337
13338         * mini.h: Add new patch types. Add got_var to MonoCompile.
13339
13340         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
13341         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
13342         make it work with all kinds of patchable code.
13343
13344         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
13345         address of the GOT, and referencing entries in the GOT.
13346
13347         * mini.c: Add code to load the GOT address if needed by an opcode.
13348
13349         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
13350         independent AOT code on the x86 using an elf-style Global Offset Table.
13351
13352 2004-12-14  Raja R Harinath  <rharinath@novell.com>
13353
13354         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
13355
13356 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13357
13358         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
13359         when running xsp.
13360
13361 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
13362
13363         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
13364         of Interlocked:Increment/Decrement/Add as inline ops.
13365         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
13366
13367 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
13368
13369         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
13370         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
13371
13372 2004-12-12  Duncan Mak  <duncan@ximian.com>
13373
13374         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
13375         again. `patch_info->table_size' is no longer valid after Zoltan's
13376         commit #37636.
13377
13378 2004-12-12  Martin Baulig  <martin@ximian.com>
13379
13380         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
13381         if we are the "real" method, ie. not an inlined method inside it.
13382
13383 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
13384
13385         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
13386         before we look in the special fields table. This fixes
13387         ../tests/thread-static-init.cs.
13388
13389 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13390
13391         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
13392         for Array get_Rank and get_Length. Fixes bug #70465.
13393
13394 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
13395
13396         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
13397         separate structure to reduce the size of MonoJumpInfo.
13398
13399 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
13400
13401         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
13402
13403 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
13404
13405         * mini.c (mini_get_inst_for_method): Changed to allow ports
13406         to return a MonoInst instead of opcode 
13407         (renamed mini_get_opcode_for_method to better reflect the new functionality)
13408         
13409         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
13410         Allow ports to return a created MonoInst instead of op-code, will enable
13411         new optimizations.
13412         (renamed mini_get_opcode_for_method to better reflected the functionality)
13413
13414 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
13415
13416         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
13417
13418 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13419
13420         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
13421         Fixes #69985.
13422
13423 2004-12-08  Martin Baulig  <martin@ximian.com>
13424
13425         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
13426         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
13427
13428 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13429
13430         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
13431         correctly.
13432
13433         * exceptions.cs: Disable some tests which depend on properties of x86 fp
13434         arithmetic.
13435
13436 2004-12-08  Raja R Harinath  <rharinath@novell.com>
13437
13438         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
13439
13440 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
13441
13442         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
13443         bug introduced by the previous patch.
13444
13445 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13446
13447         * mini-ppc.c, objectc.cs: handle large structs passed by value
13448         (fixes bug #69972).
13449
13450 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
13451
13452         * mini-ppc.c: OP_ARGLIST implementation from
13453         Geoff Norton  <gnorton@customerdna.com>.
13454
13455 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
13456
13457         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
13458         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
13459
13460 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13461
13462         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
13463
13464 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13465
13466         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
13467         support.
13468
13469 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
13470
13471         * mini-sparc.c: Zero out localled-ed memory.
13472
13473         * iltests.il: Add tests for zeroing out localloc-ed memory.
13474
13475 2004-12-04  Martin Baulig  <martin@ximian.com>
13476
13477         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
13478         mono_method_get_signature_full().       
13479
13480 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
13481
13482         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
13483         and some utility functions (always for SSAPRE), integrated SSAPRE.
13484         * mini.h: Likewise.
13485         * driver.c: Added ssapre option.
13486         * ssa.c: Small fix on OP_ARG handling.
13487         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
13488         * Makefile.am: Likewise.
13489
13490 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
13491
13492         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
13493         now in the xp code.
13494
13495         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
13496         icall.
13497
13498 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13499
13500         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
13501         
13502         * cpu-s390.md : Increase instruction length of oparglist.
13503
13504         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
13505
13506 2004-11-30  Martin Baulig  <martin@ximian.com>
13507
13508         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
13509         virtual generic methods.  We call a special helper_compile_generic_method()
13510         icall to retrieve the method from the vtable, inflate and compile
13511         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
13512
13513         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
13514
13515 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
13516
13517         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
13518
13519 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
13520
13521         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
13522         Fixes #69929.
13523
13524 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
13525
13526         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
13527         platforms with PIC aot.
13528
13529 2004-11-28  Martin Baulig  <martin@ximian.com>
13530
13531         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
13532         Fixes gen-112.cs.
13533
13534 2004-11-28  Martin Baulig  <martin@ximian.com>
13535
13536         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
13537         the result of mono_type_get_underlying_type() to check whether
13538         we're byref.
13539
13540 2004-11-26  Martin Baulig  <martin@ximian.com>
13541
13542         * mini.c
13543         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
13544         in the g_assert().
13545
13546 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
13547
13548         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
13549         the same way as the other arguments so they won't get clobbered.
13550
13551         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
13552         calls through R11 since it is clobbered by the trampoline code.
13553
13554 2004-11-26  Raja R Harinath  <rharinath@novell.com>
13555
13556         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
13557         pick up in-tree mscorlib.dll.
13558
13559 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
13560
13561         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
13562
13563         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
13564         runtime data/code are now stored in a table similar to the GOT in ELF. 
13565         This allows the code itself to be position independent.
13566
13567         * aot.c: Fix loading of referenced assemblies after the lazy assembly
13568         loading changes.
13569
13570         * aot.c: Attach ELF type (object/function) directives to all global
13571         symbols.
13572
13573         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
13574
13575         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
13576
13577         * mini-amd64.h: Turn on PIC AOT code.
13578
13579         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
13580         returning the offset within an OP_AOTCONST instruction where the GOT
13581         offset needs to be added.
13582
13583         * mini.h: Bump AOT file format version.
13584
13585 2004-11-25  Martin Baulig  <martin@ximian.com>
13586
13587         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
13588         uninflated generic methods.
13589
13590 2004-11-25  Martin Baulig  <martin@ximian.com>
13591
13592         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
13593
13594 2004-11-24  Martin Baulig  <martin@ximian.com>
13595
13596         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
13597         original klass (this only applies for generic instances).
13598
13599 2004-11-24  Martin Baulig  <martin@ximian.com>
13600
13601         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
13602         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
13603         that array).
13604
13605 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
13606
13607         * mini.c (mono_method_to_ir): Disable inlining for methods containing
13608         localloc. Fixes #69678.
13609
13610         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
13611         
13612 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
13613
13614         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
13615         used SSE registers on pinvoke calls. Fixes #69774.
13616
13617 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
13618
13619         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
13620         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
13621
13622 2004-11-23  Raja R Harinath  <rharinath@novell.com>
13623
13624         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
13625         Refer directly to the mcs/ tree.
13626
13627 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13628
13629         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
13630         Check if a trampoline for a synchronized method is required. 
13631
13632 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
13633
13634         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
13635         with localloc if needed. Throe arithmetric exception in
13636         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
13637         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
13638
13639 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
13640
13641         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
13642         types before switching on type.  Fixes #69622.
13643
13644 2004-11-19  Raja R Harinath  <rharinath@novell.com>
13645
13646         * Makefile.am (check-local): New.  Integrate into 'make check'.
13647         (MCS,RUNTIME): Define using in-tree mono and mcs.
13648         (ILASM): New.
13649         (%.exe): Use $(ILASM).
13650
13651 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
13652
13653         * mini-ppc.c: adjust initial prolog size (bug #69691).
13654
13655 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
13656
13657         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
13658         #69664.
13659
13660 2004-11-17  Raja R Harinath  <rharinath@novell.com>
13661
13662         * Makefile.am (clean-local): Rename from 'clean'.
13663
13664 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13665
13666         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
13667         to mono_arch_is_int_overflow. 
13668         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
13669         SIGFPE events.
13670
13671 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
13672
13673         * declsec.c|h: New files to support declarative security attributes.
13674         Added function to check if a method has (applicable) security.
13675         * mini.c|h: Add check for declarative security attributes in
13676         mono_method_check_inlining.
13677         * Makefile.am: Added declsec.c and declsec.h to the build.
13678
13679 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
13680
13681         * mini.c, mini.h: update to keep dynamic code info per-domain.
13682
13683 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
13684
13685         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
13686         (mini_init): Get rid of it from here too.
13687
13688 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
13689
13690         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
13691         implemented OP_RETHROW (patch by Geoff Norton
13692         <gnorton@customerdna.com>).
13693
13694 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
13695
13696         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
13697         between appdomains.  Fixes appdomain-unload on PPC.
13698
13699 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
13700
13701         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13702         mini-exceptions.c: handle the new wrapper types.
13703         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
13704         token value as a MonoClass* when compiling a wrapper.
13705         mono_jit_create_remoting_trampoline now takes an additional
13706         MonoRemotingTarget parameter.
13707         
13708 2004-11-10  Martin Baulig  <martin@localhost>
13709
13710         * mini.c (mono_method_to_ir): Use `generic_container->context'
13711         rather than creating a new one.
13712
13713 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13714
13715         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
13716
13717         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
13718
13719 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
13720
13721         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
13722         the experimental aot cache stuff.
13723
13724 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
13725
13726         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13727         mini-exceptions.c: update to exception clause structure changes.
13728
13729 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13730
13731         * exceptions-x86.c (throw_exception): Fix warnings.
13732
13733         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
13734         for OP_RETHROW.
13735
13736 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13737
13738         * exceptions-sparc.c (get_throw_exception): Really fix this.
13739
13740 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
13741
13742         * tramp-*.c: we no longer support icalls without wrappers, so
13743         a bit of code can be removed here
13744
13745 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
13746
13747         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
13748         patch.
13749
13750         * cpu-sparc.md: Add op_rethrow.
13751
13752         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
13753
13754         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
13755
13756         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
13757         * mini-ops.h: Add OP_RETHROW.
13758
13759         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
13760
13761         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
13762
13763 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
13764         
13765         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
13766         Makes the output much easier to read
13767
13768 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
13769
13770         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
13771         prevents another huge leak when compiling with ssa. Secondly, the
13772         performance of doing this rather than freeing the lists is much
13773         better. GList does a lock every time you allocate a list link,
13774         so that it can use a memory pool. So, it is better to just use
13775         a memory pool of our own.
13776         
13777         * ssa.c, linear-scan.c: replace g_list_remove_link with
13778         g_list_delete.  The remove one does not free the GList, so we were
13779         leaking memory. On -O=all --compile-all with corlib, this cut down
13780         3 MB of allocations.
13781
13782 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
13783
13784         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
13785
13786         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
13787
13788         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
13789         into a new function mono_create_jit_trampoline ().
13790
13791 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
13792
13793         * trace.c (get_spec): Allow tracing of classes without a namespace.
13794
13795 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
13796
13797         * mini.c: Fix pointer overwrite in mini_method_compile.
13798
13799 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
13800
13801         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
13802         The darwin ABI needs some special handling for 1 and 2 byte structs
13803         Lets use lbz/lhz instead of lwz everywhere.
13804         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
13805         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
13806         Use stb/sth for the former, and put the latter always on stack instead of in
13807         argument registers.
13808
13809 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
13810
13811         * trace.c (is_filenamechar): Add '_'.
13812
13813 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
13814
13815         * mini-s390.c: Fix prolog length to allow for large trace requirements.
13816
13817         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
13818
13819 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
13820
13821         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
13822         depends on libmonogc. Fixes #68805.
13823
13824 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
13825
13826         * mini.c (mono_jit_free_method): Provide extra information for
13827         this error.  Currently this leaks, but will be turned into a
13828         developer option in the future.
13829
13830 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
13831
13832         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
13833
13834 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
13835
13836         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
13837         boundary. Fixes reading of PATCH_INFO_R4 and R8.
13838         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
13839
13840 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
13841
13842         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
13843         trampolines for AOT code.
13844
13845 2004-10-22    <vargaz@freemail.hu>
13846
13847         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
13848         constructed types. Fixes #68136.
13849
13850 2004-10-21  Martin Baulig  <martin@ximian.com>
13851
13852         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
13853         if it returns true, unwind the stack to the call instruction.
13854
13855 2004-10-21    <vargaz@freemail.hu>
13856
13857         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
13858
13859         * mini.h: Bump AOT version number.
13860
13861         * objects.cs: Add another test for unbox trampolines.
13862
13863         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
13864         valuetype methods.
13865
13866 2004-10-20    <vargaz@freemail.hu>
13867
13868         * driver.c: Add SHARED to the set of optimizations tested.
13869
13870         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
13871
13872         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
13873         used by CEE_NEWARR.
13874
13875         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
13876
13877 2004-10-20  Martin Baulig  <martin@ximian.com>
13878
13879         * mini-exceptions.c (mono_handle_exception): Call
13880         mono_debugger_handle_exception() to tell the debugger about
13881         catch/finally clauses.
13882
13883 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
13884
13885         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
13886
13887         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
13888         #68447.
13889
13890 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
13891
13892         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
13893         methods as their native size, fixed bug #57543, #57545.
13894         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
13895         This saves a temporary register and mullw call down into 1 (minor perf
13896         increase for cases like sum = sum * 5;  This use to translate into:
13897             li r11,5
13898             mullw r28,r28,r11
13899         It now translates to
13900             mulli r28,r28,5
13901
13902 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
13903
13904         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
13905         #68388.
13906
13907 2004-10-11  Martin Baulig  <martin@ximian.com>
13908
13909         * mini.c (mono_method_to_ir): If we're a generic method, get the
13910         MonoGenericContainer from our MonoMethodNormal and create a
13911         MonoGenericContext from it.
13912
13913 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
13914
13915         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
13916
13917         * basic-long.cs: Add test for checked i8->i2 cast.
13918
13919 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
13920
13921         * inssel-ppc.brg: added a couple of speedup rules.
13922
13923 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
13924
13925         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
13926         to speed up rebuilds.
13927
13928 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13929
13930         * mini-s390.c: Minor fix to OP_OR_IMM.
13931
13932 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
13933
13934         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
13935         better. Fixes appdomain-unload.exe on sparc.
13936
13937 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
13938
13939         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
13940         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
13941         see bug 67324.
13942
13943 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
13944
13945         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
13946
13947 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
13948
13949         * mini.c: Always generate a field read/write wrapper for members
13950         of the class MarshalByRefObject since the actual instance could
13951         be a CBO.
13952
13953 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
13954
13955         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
13956
13957 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
13958
13959         * driver.c mini.h trace.c: Move the setting of the main assembly into
13960         a separate function called mono_trace_set_assembly () and call it after
13961         actually loading the main assembly. Fixes #66872.
13962
13963 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
13964
13965         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
13966         using the code manager.
13967
13968 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
13969
13970         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
13971
13972 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
13973
13974         * cpu-amd64.md: Fix bug in previous patch.
13975         
13976         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
13977         #66650.
13978
13979 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
13980
13981         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13982         mini-exceptions.c: updates for changed stack walk interface.
13983
13984 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13985
13986         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
13987
13988 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
13989
13990         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
13991
13992 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
13993
13994         * driver.c (mini_regression_list): Do not call mono_assembly_close 
13995         since assemblies can't be unloaded.
13996         
13997 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
13998
13999         * cpu-amd64.md: Fix more instruction lengths.
14000
14001         * cpu-amd64.md: Fix lengths of some instructions.
14002
14003 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
14004
14005         * inssel.brg: Make the array ldelema check aot friendly.
14006
14007 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14008
14009         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
14010
14011         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
14012
14013 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
14014
14015         * mini-x86.c: Fix build.
14016
14017         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
14018         mono_type_get_underlying_type () helper function to simplify code.
14019         
14020 2004-09-09  Martin Baulig  <martin@ximian.com>
14021
14022         * mini-amd64.c: Don't access `type->data.klass' directly, call
14023         mono_class_from_mono_type() instead since the type may be a
14024         generic instance.
14025
14026 2004-09-09  Martin Baulig  <martin@ximian.com>
14027
14028         * mini-amd64.c (get_call_info): Fix support for generic instances.
14029         (add_valuetype): Use mono_class_from_mono_type() to get the class
14030         since we can be a generic instance.
14031
14032 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
14033
14034         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
14035
14036 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
14037
14038         * liveness.c: reset spill costs on each scan: bug 62107
14039
14040 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
14041
14042         * exceptions-sparc.c (mono_arch_find_jit_info): remove
14043         unnecessary line that doesn't compile
14044
14045 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
14046
14047         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
14048         trampolines, make them call an error function so people can fix their
14049         code.
14050
14051 2004-09-06  Martin Baulig  <martin@ximian.com>
14052
14053         * mini.c (mono_method_to_ir): When initializing locals, handle a
14054         generic instances like a valuetype if it's a valuetype and like a
14055         class if it's a class.
14056
14057 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14058
14059         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
14060         stack. Fixes #64674.
14061
14062         * exceptions.cs: Add test for unwinding of call arguments.
14063
14064 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
14065
14066         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
14067         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
14068         set the carry/borrow flag). The sparc and s390 implementations
14069         can now use optimized versions (and simplify the code). ppc bugfixes.
14070
14071 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14072
14073         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
14074
14075 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
14076
14077         * inssel-amd64.brg: Remove leftover 32 bit rule.
14078
14079         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
14080
14081 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
14082
14083         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
14084         mono_arch_find_jit_info functions into a new function. Fix a memory
14085         leak.
14086
14087         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
14088         refactored code.
14089         
14090 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14091
14092         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
14093         as well.
14094         
14095         * exceptions.cs: Add array size tests.
14096
14097         * mini.c: Allocate a separate icall wrapper for each arity of 
14098         mono_array_new_va. Fixes #59509.
14099
14100         * exceptions.cs: Add testcase for 64578.
14101
14102         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
14103
14104         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
14105         
14106 2004-09-02  Martin Baulig  <martin@ximian.com>
14107
14108         * mini.c (mono_method_to_ir): When initializing the locals, call
14109         handle_initobj() on the generic instance itself, not its
14110         underlying type.
14111
14112 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14113
14114         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
14115         MonoJitInfo for dynamic methods.
14116
14117         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
14118
14119         * mini.c: Add support for freeing JIT data for dynamic methods.
14120         
14121 2004-09-01  Martin Baulig  <martin@ximian.com>
14122
14123         * mini-x86.c (is_regsize_var): Added support for generic
14124         instances.
14125         (mono_arch_emit_prolog): Make this compile again, use
14126         `x86_push_imm_template (code)'.
14127
14128 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
14129
14130         * mini-x86.c: make all push_imm instructions that get
14131         patched always emit the long form
14132
14133 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
14134
14135         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
14136         in a per-domain hash.
14137
14138         * mini-amd64.c (merge_argument_class_from_type): Handle generic
14139         types.
14140
14141 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
14142
14143         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
14144         work.
14145         
14146         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
14147         work.
14148
14149         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
14150         Beginnings of SSE2 support.
14151
14152         * exceptions.cs: Add more tests for checked int<->uint casts.
14153
14154 2004-08-28  Martin Baulig  <martin@ximian.com>
14155
14156         * mini-x86.c (mono_arch_instrument_epilog): Added support for
14157         generic instances.
14158
14159         * mini.c
14160         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
14161         Handle generic instances recursively.
14162
14163 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14164
14165         * iltests.il: test for conv.u8 on a constant
14166
14167 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14168
14169         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
14170         LCONV_x4 (shrun_32 (membase)).
14171
14172 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
14173
14174         * inssel-x86.brg: c&p rules for push/setret of long
14175
14176 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14177
14178         * inssel-x86.brg: c&p rules for compare (base, regvar) and
14179         compare (regvar, base)
14180
14181         * inssel-x86.brg: more burg love
14182
14183         * inssel.brg: more cleanup
14184
14185         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
14186
14187 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14188
14189         * basic-long.cs, basic-calls.cs: new tests for optimization.
14190
14191 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
14192
14193         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
14194         patch.
14195
14196 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14197
14198         * mini-amd64.c (read_tls_offset_from_method): Add another case.
14199         
14200 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
14201
14202         * inssel.brg (mini_emit_memcpy): use 
14203         NO_UNALIGNED_ACCESS to disable memcpy optimization
14204
14205 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14206
14207         * mini-amd64.c: Handle generic types in various places.
14208
14209         * mini.c (mono_method_to_ir): Handle generic types in init locals.
14210
14211 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
14212
14213         * mini.c (handle_box): Fix warning.
14214
14215         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
14216
14217         * mini-amd64.h: Enable the emit_state optimization.
14218
14219         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
14220
14221         * mini-amd64.c: Add some new 64 bit peephole opts.
14222
14223         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
14224
14225         * cpu-amd64.md: sreg1 of div instructions must be %rax.
14226
14227         * mini-amd64.c: Register allocator fixes.
14228
14229         * mini.c: Add an optimization to emit_state to avoid allocation of new
14230         registers on some platforms.
14231
14232 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
14233
14234         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
14235
14236         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
14237         allocation. Fixes #63085.
14238
14239         * basic-long.cs: Add new regression test.
14240
14241         * mini-amd64.c: Register allocator improvements.
14242
14243 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
14244
14245         * mini-amd64.c (read_tls_offset_from_method): Add another code
14246         sequence.
14247
14248         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
14249         instruction sequence for nullifying class init trampolines.
14250
14251         * objects.cs: Add new regalloc test.
14252
14253         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
14254
14255 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14256
14257         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
14258         
14259         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
14260         arguments.
14261
14262         * driver.c: Fix profiling after TLS changes.
14263         
14264         * driver.c (mono_main): Set mono_stats.enabled if needed.
14265
14266         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
14267         CEE_BOX.
14268
14269 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
14270
14271         * mini-x86.c: use a 1 op rather than a 2 op tls access
14272         instruction -> faster.
14273
14274 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14275
14276         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
14277         x86 backend.
14278
14279 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
14280
14281         * exceptions-sparc.c (throw_exception): fix typo
14282
14283 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
14284
14285         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
14286         set tree->dreg correctly with tls. Allow any
14287         register to be used.
14288
14289         * mini-x86.c (read_tls_offset_from_method): add new code
14290         generation pattern seen with GCC.
14291
14292
14293 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
14294
14295         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
14296         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14297         exceptions-sparc.c: fix some performance issues in exception
14298         handling and setting of the stack trace for exceptions that were
14299         already thrown.
14300
14301 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14302
14303         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
14304         x86 backend.
14305         
14306         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
14307         registers.
14308
14309 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
14310
14311         This patch inlines tls access, when possible.
14312         
14313         * mini.h: new arch functions for TLS intrinsics.
14314         All platforms updated with a stub.
14315
14316         * mini.c: use the new intrinsics
14317
14318         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
14319         arch specific intrinsic for tls variables
14320
14321 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14322
14323         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
14324         under windows.
14325
14326 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14327
14328         * mini.c: thread local allocation
14329
14330 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
14331
14332         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
14333
14334         * Makefile.am: Link against the static version of libmonogc.
14335         
14336         * Makefile.am: Link the static versions of the convenience libraries
14337         into the mono executable.
14338
14339         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
14340
14341 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
14342
14343         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
14344         on integer overflow.
14345
14346         * mini-amd64.c: Reorganize function call code.
14347
14348         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
14349
14350 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14351
14352         * inssel-x86.brg: use xor eax,eax.
14353         
14354         * basic.cs: new tests
14355
14356 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14357
14358         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
14359         in exception throwing code.
14360         
14361 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14362
14363         * inssel-x86.brg: use xor esi,esi.
14364
14365 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14366
14367         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
14368         can trace methods compiled during mini_init () too.
14369
14370         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
14371         CEE_CONV_U4.
14372
14373 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14374
14375         * Makefile.am: static link on x86 (r=zoltan)
14376
14377 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14378
14379         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
14380         code since it causes some programs to fail.
14381
14382 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
14383
14384         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
14385
14386 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14387
14388         * mini.c: ovfops_op_map - add STACK_OBJ case for
14389         CONV_I 
14390         * basic.cs: add test_0_pin_string as test
14391         case for above.
14392
14393 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14394
14395         * Makefile.am: build C# if srcdir != builddir
14396
14397 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
14398
14399         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
14400         fall-through blocks.
14401
14402 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
14403
14404         * driver.c: enable loop by default again and include abcrem in -O=all.
14405
14406 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
14407
14408         * iltests.il: Add some localloc tests.
14409
14410         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
14411
14412         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
14413         Fixes #62574.
14414
14415         * inssel-amd64.brg: Add some optimizations.
14416
14417         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
14418         for gcc-3.4.
14419
14420         * Makefile.am: Statically link mono against libmono on AMD64.
14421         
14422         * mini-amd64.c inssel-amd64.brg: Optimizations.
14423
14424 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
14425
14426         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
14427
14428         * tramp-amd64.c: Patch calling code in trampolines.
14429
14430 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
14431
14432         * mini-amd64.c: pinvoke struct passing fixes.
14433
14434 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
14435
14436         * mini-sparc.c: redo change, make mono_arch_cpu_init call
14437         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
14438
14439 2004-08-05  Duncan Mak  <duncan@ximian.com>
14440
14441         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
14442         CEE_LDELEM_ANY.
14443
14444 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14445
14446         * mini-amd64.c (emit_move_return_value): Move return value for normal
14447         calls too.
14448
14449 2004-08-05  Martin Baulig  <martin@ximian.com>
14450
14451         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
14452         `type->type'; just modify `type' itself when dealing with enums
14453         and generic instances.
14454         (check_call_signature): Make `simple_type' a `MonoType *'.
14455
14456 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14457
14458         * mini.c: Use OP_PADD to add offsets to addresses.
14459
14460         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
14461
14462 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
14463
14464         * mini-sparc.c (mono_arch_emit_epilog): fix check
14465         for folding last op into restore instruction
14466
14467 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14468
14469         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
14470         helper methods using the code manager.
14471         
14472         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
14473
14474         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
14475
14476 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14477         
14478         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
14479           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
14480
14481         * mini-s390.c: fix tail processing
14482
14483 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
14484
14485         * mini-ppc.c: mul.ovf.un exception name fix.
14486
14487 2004-08-03  Martin Baulig  <martin@ximian.com>
14488
14489         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
14490         instances; before jumping to `handle_enum', also modify `ptype'.
14491
14492 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
14493
14494         * cpu-sparc.md: fcall maximal length too small.
14495
14496 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
14497
14498         * mini-amd64.c mini.h: Add initial support for passing/returning 
14499         structures to/from pinvoked methods.
14500
14501 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
14502
14503         * mini-ppc.c: reg allocator fix.
14504
14505 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
14506
14507         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
14508
14509         * inssel.brg: Optimize memset on 64 bit machines.
14510
14511         * mini-amd64.c: Fix some vararg cases.
14512
14513 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14514
14515         * mini-s390.c: Corrected macro in emit_float_to_int
14516
14517         * s390-abi.cs: Tests to exercise the s390 ABI
14518
14519 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14520
14521         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
14522         caller saved regs.
14523
14524         * basic.cs: Add a test for add.ovf.un.
14525
14526 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
14527
14528         * mini-sparc.c: add case for OP_IDIV_UN
14529
14530 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14531
14532         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
14533         
14534         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
14535
14536 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
14537
14538         * basic.cs: regression tests.
14539
14540         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
14541         regressions.
14542
14543 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14544
14545         * basic.cs: Add a new test.
14546
14547         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
14548         and AOT. Various fixes and optimizations.
14549
14550         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
14551
14552 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
14553
14554         * mini-ppc.c: make sure temp regs are not used for global reg
14555         allocation.
14556
14557 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
14558
14559         * cpu-sparc.md: conv_i8 fix for 64bits
14560
14561         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
14562
14563 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
14564         
14565         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
14566         add opcode for cmp BYTE PTR [eax], imm.
14567
14568         * inssel.brg: Make memcpy and memset takes bases.
14569
14570 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14571
14572         * *-amd64.*: More AMD64 work.
14573         
14574 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14575
14576         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
14577         add a compare-not-equal opcode.
14578         
14579 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
14580
14581         * mini.c: Use mono_init_from_assembly instead of mono_init.
14582         
14583 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14584
14585         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
14586
14587         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
14588
14589         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
14590
14591         * inssel.brg: 64 bit fixes.
14592
14593         * mini.h (MonoCallInst): Add some AMD64 specific data.
14594
14595         * mini.h: Add some OP_P opcodes.
14596
14597 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14598
14599         * basic.cs: tests for 61797 and 61740
14600
14601 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
14602
14603         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
14604         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
14605
14606 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
14607
14608         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
14609
14610         * *-amd64*.*: Ongoing AMD64 work.
14611
14612 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
14613
14614         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
14615
14616         * *-amd64*: Ongoing AMD64 work.
14617
14618         * mini-arch.h: Add AMD64 support.
14619
14620         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
14621
14622         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
14623
14624         * mini-ops.h: Add new opcodes.
14625
14626         * Makefile.am: Add AMD64 support.
14627
14628         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
14629         rules into the inssel-long*.brg files.
14630
14631         * *-amd64.*: Add beginnings of AMD64 backend.
14632
14633 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
14634
14635         * mini.c (print_dfn): commenting out the code that prints
14636         the cil. With -O=deadce, this makes -v -v crash.
14637         
14638         * cpu-pentium.md: make checkthis have a length of 2
14639
14640 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
14641
14642         * mini-sparc.h: fix implementations of __builtin
14643         functions for Sun compiler for V9.
14644
14645 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
14646
14647         * mini.c: use the new stelem.ref wrapper
14648         * exceptions.cs, arrays.cs: new stelem.ref tests
14649
14650 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14651
14652         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
14653         new XSP should work with these changes).
14654
14655 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
14656         
14657         * inssel-{long32,x86,}.brg: trivial optimizations.
14658         
14659 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
14660
14661         * mini.c: load value when emitting box operation in
14662         constrained calls.
14663
14664 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
14665
14666         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
14667         is one byte shorter than cmp DWORD PTR [eax], 0.
14668
14669 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
14670
14671         * inssel-ppc.brg: arguments on the stack are always
14672         relative to the stack pointer (spotted by Neale Ferguson).
14673
14674 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14675
14676         * exceptions-x86.c: delay appending the method name to the trace until
14677         after mono_jit_info_table_find is called, as this gets the real
14678         MonoMethod.
14679
14680 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
14681
14682         * aot.c: register roots
14683
14684 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14685
14686         * aot.c : I could just use PLATFORM_WIN32 flag.
14687
14688 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14689
14690         * aot.c : Reverting the previous fix. This time it broke linux build.
14691
14692 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14693
14694         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
14695
14696 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
14697
14698         * mini.c (handle_stack_args): Remove some more debugging code.
14699         
14700         * mini.c (handle_stack_args): Remove debug output left in by mistake.
14701
14702         * driver.c mini.h aot.c: Allow additional options to be specified with
14703         --aot and pass them to mono_compile_assembly.
14704
14705         * aot.c: Add experimental code to AOT compile all loaded assemblies
14706         on demand and save the code into a cache in the filesystem.
14707
14708         * aot.c: Add support for more wrapper methods.
14709         
14710         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
14711         58863.
14712
14713         * cpu-*.md: Remove removed opcodes.
14714
14715         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
14716         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
14717         related icalls to marshal.c.
14718
14719 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
14720
14721         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
14722
14723         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
14724
14725         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
14726
14727 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
14728         * liveness.c: If liveness is recomputated we need to reset the information
14729         for each variable. This way, if the liveness range has been narrowed
14730         by optimizations that happened after the last computation, we can return
14731         a smaller range.
14732         
14733         For example, if you have
14734         
14735         {
14736                 int i = 0;
14737                 
14738                 // Tons of code that does not affect i
14739                 
14740                 i = foo ();
14741                 ...
14742         }
14743         
14744         i = 0 is dead code and will be removed by SSA. However, when
14745         linear scan gets to the code, i will still appear to be live
14746         throughout the entire block. This prevents good register allocation.
14747
14748 2004-07-06  Martin Baulig  <martin@ximian.com>
14749
14750         * debug-mini.c (mono_debug_init_method): Allow
14751         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
14752         (mono_debug_add_icall_wrapper): New method.
14753
14754         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
14755
14756 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
14757
14758         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
14759         optimization.
14760
14761 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
14762
14763         * aot.c (mono_aot_load_method): Fix loading of debug info.
14764
14765 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14766
14767         * aot.c: Add logging support.
14768
14769 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14770
14771         * mini.h: Add prototype for mono_print_method_from_ip.
14772
14773         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
14774
14775         * inssel.brg: 64 bit fixes.
14776
14777         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
14778         inssel-long32.brg.
14779
14780         * Makefile.am: Add SPARC64 support.
14781
14782 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14783
14784         * aot.c: Fix alignment problems on 32 bit platforms.
14785
14786 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14787
14788         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
14789         SPARC64.
14790
14791         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
14792         problems.
14793
14794         * mini.h: Bump AOT file version. Some 64 bit fixes.
14795
14796 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14797
14798         * inssel-sparc.brg: Add new rule to avoid register moves.
14799
14800         * inssel.brg: Add ldind_to_load_membase helper function.
14801
14802 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
14803
14804         * mini.c: OffsetToStringData intrinsic.
14805         
14806 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14807
14808         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
14809
14810         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
14811         regression tests.
14812
14813         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
14814 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
14815
14816         * mini.c: reinstated mono_compile_get_interface_var()
14817         on x86, too, since the change breaks the Gtk# build there as well.
14818
14819 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14820
14821         * driver.c: remove loop from the default optimizations: it seems to
14822         interact badly with some of the other options (see bug #60613).
14823
14824 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
14825
14826         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
14827         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
14828
14829 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
14830
14831         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
14832         vararg-using methods.
14833
14834 2004-06-21  Martin Baulig  <martin@ximian.com>
14835
14836         * mini/mini-exceptions.c
14837         (mono_handle_exception): Added `gpointer original_ip' argument.
14838         After calling mono_unhandled_exception(), call
14839         mono_debugger_unhandled_exception() and if that returns true,
14840         restore the context and return.
14841
14842 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
14843
14844         * mini-ppc.c: prefer the use of relative branches so
14845         they won't need to be patched in aot code (patch from Patrick Beard).
14846
14847 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
14848
14849         * aot.c: patch from Patrick Beard to make the output assembly
14850         more correct for the MacOSX assembler. Small tweak to
14851         generate sane images on Linux/PPC, too.
14852
14853 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14854
14855         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
14856         case until bug #59509 is fixed (shows up in #60332).
14857
14858 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
14859
14860         * mini.c: make sure the needed wrappers are compiled, too, with
14861         precomp.
14862
14863 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
14864
14865         * driver.c: remove NPTL reference in --version output.
14866
14867 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14868
14869         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
14870         generate valid assembly for the Mach-O assembler.
14871
14872 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
14873
14874         * driver.c: don't include abcrem in the all optimization specifier
14875         since it slows down jit compilation too much for now.
14876
14877 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
14878
14879         * mini.c: use BIGMUL only if both operands have the same signage.
14880         * iltests.il: Test for bug 60056. (errors related to signage in
14881         BIGMUL).
14882
14883         r=lupus.
14884
14885 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
14886
14887         * mini.c, aot.c: memory leak fixes.
14888
14889 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
14890
14891         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
14892
14893 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
14894
14895         * Makefile.am: remove the -static hack completely, it links in
14896         statically glib as well.
14897
14898 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
14899
14900         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
14901         * exceptions.cs: make it compile with new mcs/csc.
14902
14903 2004-06-03 Massimiliano Mantione <massi@ximian.com>
14904         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
14905         and added relevant test case.
14906
14907 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
14908
14909         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
14910         regressions in gtk-sharp.
14911
14912 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
14913
14914         * exceptions.cs: New regression tests.
14915
14916         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
14917
14918 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
14919
14920         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
14921
14922 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
14923
14924         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
14925
14926         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
14927
14928 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
14929
14930         * mini.c (mono_jit_runtime_invoke): Init class in this
14931         method instead of trusting mono_jit_compile_method to
14932         do the work (because wrappers can be in object class)
14933
14934 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
14935
14936         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
14937
14938         * basic-long.cs: New regression test.
14939
14940 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
14941
14942         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
14943         and div/rem checks.
14944
14945 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
14946
14947         * Makefile.am: fix miguel's change to build mono statically against
14948         libmono (track build dependencies).
14949
14950 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
14951
14952         * cfold.c: Some glib versions do not have G_MININT32.
14953
14954 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
14955
14956         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
14957         with precision of tan, atan, sin and cos, and implemented related
14958         regressions tests (fixes bug 54467, but one new problem appeared and
14959         is not fixed yet).
14960
14961 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
14962
14963         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
14964
14965         * exceptions.cs: Add test for constant folding && division by zero.
14966
14967         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
14968         since driver.c is in libmono too, so the optimization was useless.
14969
14970         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
14971         variable to driver.c so the compiler can emit more efficient code to
14972         access them.
14973
14974 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14975
14976         * Makefile.am: don't distribute generated inssel.[ch] files.
14977
14978 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
14979
14980         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
14981         into the default appdomain. Fixes #58707.
14982
14983         * jit-icalls.c: Remove the broken approximation for truncl, doing
14984         no conversion is better.
14985
14986         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
14987         Fixes #58863.
14988
14989 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
14990
14991         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
14992         of the mcrxr instruction which is not available on some processors
14993         even if it's documented to be. Implement add and sub overflow correctly
14994         (still not complete for long unsigned). Speed up icalls a bit.
14995
14996 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
14997
14998         * mini.c (mono_jit_compile_method_with_opt): Make sure that
14999         we run .cctor in the current domain instead of target_domain.
15000         
15001         Fixes bug #58558, .cctor not being called in -O=shared.
15002
15003 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15004
15005         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
15006
15007 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
15008
15009         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
15010         which can be done with an imm8, do it that way.
15011         (mono_arch_output_basic_block): ditto for a jmp
15012         (mono_arch_emit_prolog): Computate maximum offset of a label.
15013
15014 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
15015
15016         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
15017         now tries to allocate prefered physical reg's for virtual
15018         regs. This reduces the number of emited spills/loads with
15019         20-30% on our core assemblies.
15020
15021 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15022
15023         * jit-icalls.c: truncl() is not needed and trunc() is
15024         the correct thing to do anyway (bug #58287).
15025
15026 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
15027
15028         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
15029         if available.
15030
15031 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
15032
15033         * driver.c: enable loop optimizations by default.
15034
15035 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
15036
15037         * mini-x86.c: fix calc of max loop size when aligning loops start.
15038
15039 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
15040
15041         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
15042         the stack.
15043
15044 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
15045
15046         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
15047         should set carry.
15048
15049         * basic-long.cs: Add tests for add/subtract of immediates with carry.
15050
15051         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
15052         
15053         * mini.c (inline_method): Allways inline some wrappers even if the cost
15054         is too large. Fixes #58785.
15055
15056         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
15057         
15058 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
15059
15060         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
15061         (crichton@gimp.org). Beginning of support for sparc/linux.
15062
15063         * mini-sparc.c: Optimize retrieval of LMF address.
15064
15065 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
15066
15067         * exceptions-ppc.c:  handle alloca in methods with clauses.
15068
15069 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
15070
15071         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
15072
15073 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
15074
15075         * mini.c: Delegate most of the abort signal work to 
15076           mono_thread_request_interruption, which also handles Stop and Suspend
15077           states.
15078
15079 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
15080
15081         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
15082         supports the save/restore lmf opcodes.
15083
15084 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
15085
15086         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
15087         by gcc-3.4 as well.
15088
15089         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
15090
15091 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15092
15093         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
15094         methods which contain array accesses.
15095
15096         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
15097         boundaries. Fixes #58537.
15098
15099         * iltests.il: Add regression test for #58537.
15100
15101 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
15102
15103         * mini-x86.c (mono_arch_local_regalloc): Last part of
15104         fix for bug #58633 (releasing register to early).
15105
15106 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
15107
15108         * basic-long.cs: Add new regression test.
15109
15110 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
15111
15112         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
15113         register too early on the chain.
15114
15115 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15116
15117         * mini.c (create_helper_signature): Use a helper function to reduce
15118         the code which needs to be written. Also set the calling convention of
15119         icalls on windows. Fixes #57840.
15120
15121 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
15122
15123         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
15124         exceptions-ppc.c: added helper function to get the instruction address
15125         from a signal handler context.
15126
15127 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15128
15129         * helpers.c: use g_get_tmp_dir. Invokes happyness 
15130         from gonzalo.
15131
15132 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15133
15134         * helpers.c: Add new env variable to pass args to objdump.
15135         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
15136
15137 2004-05-17  Radek Doulik  <rodo@ximian.com>
15138
15139         * Makefile.am (common_sources): added abcremoval.h so it get
15140         disted and daily mono packages on go-mono.com will build again
15141
15142 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
15143
15144         * abcremoval.c: Fixed coding style, added copyright header.
15145
15146         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
15147
15148         * mini.h: Added prototype for abc removal main function.
15149
15150         * build_relations_propagation_table.pl: Added copyright header.
15151
15152 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
15153
15154         * basic-long.cs: reg test for complex ceq_long bug.
15155
15156 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
15157
15158         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
15159         reg in long and clob case (bug #58343). Fixed/added comments.
15160
15161 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
15162
15163         * mini.c (mono_jit_runtime_invoke): Follow new convention
15164         of calling the invoke method with an function pointer.
15165
15166 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
15167
15168         * ChangeLog: Fix author of memory leak patch.
15169
15170 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
15171
15172         * Makefile.am: fix make dist as well...
15173
15174
15175 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
15176
15177         * cfold.c: Made so that conversions from pointer to int4 are no-ops
15178         on archs where pointers are 4 bytes long.
15179
15180         * Makefile.am: Added abcremoval.c source file.
15181
15182         * abcremoval.c: Added abcremoval.c.
15183
15184         * abcremoval.h: Added abcremoval.h.
15185
15186         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
15187
15188         * inssel.brg: Enabled bounds check removal.
15189
15190         * mini.c: Added support for abcrem optimization.
15191
15192         * mini.h: Added abcrem optimization label.
15193
15194         * driver.c: Added support for abcrem optimization.
15195
15196         * propagated_relations_table.def: Added propagated_relations_table.def.
15197
15198 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
15199
15200         * mini.c, cfold.c: fix style.
15201
15202 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15203
15204         * mini.c: handle issue with the low-level implementation of
15205         some long opcodes (bug #54209).
15206
15207 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
15208
15209         * basic.cs: test for my new cmov stuff.
15210
15211 2004-05-13      Patrik Torstensson
15212
15213         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
15214         opt and added peephole documentation.
15215
15216 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
15217
15218         * tramp-ppc.c: rewrote the generic trampoline code.
15219
15220 2004-05-11      Patrik Torstensson
15221
15222         * mini-x86.c: optimize long shl/shr asm code (one less branch)
15223
15224 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
15225
15226         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
15227
15228         * mini.h mini.c dominators.c: Applied patch from Derek Woo
15229         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
15230
15231         * mini.c: Add new icalls for AsAny marshalling.
15232
15233 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
15234
15235         * tramp-ppc.c, mini-ppc.c: more cleanups.
15236
15237 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15238
15239         * mini.c: no warnings.
15240
15241 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15242
15243         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
15244
15245 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
15246
15247         * mini.c: In the thread abort signal handler, if the thread is in the
15248         process of being stoped, don't throw the Abort exception, just stop the
15249         thread.
15250
15251 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
15252
15253         * tramp-ppc.c: removed old code.
15254
15255 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15256
15257         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
15258         do some simple speed optimizations on ppc.
15259
15260 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
15261
15262         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
15263         and large offsets in load/store.
15264
15265 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15266
15267         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
15268         it causes regressions.
15269
15270 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15271
15272         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
15273         support.
15274
15275 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15276
15277         * jit-icalls.c: remove warnings.
15278         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
15279         speedups for unsafe code.
15280
15281 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
15282
15283         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
15284
15285 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
15286
15287         * basic-calls.cs: Add new regression test.
15288
15289         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
15290         more portable.
15291
15292         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
15293
15294         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
15295         is no longer used.
15296
15297 2004-05-06      Patrik Torstensson
15298
15299         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
15300         long reg allocation in any reg (not only eax:edx) and implemented 
15301         long shl/shr ops in asm instead of helpers.
15302
15303 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
15304
15305         * mini-sparc.h: Fix warnings.
15306
15307         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
15308         stack.
15309
15310         * mini-exceptions.c (mono_handle_exception): Call the filter in a
15311         separate statement for clarity.
15312
15313         * mini-sparc.c: Update status.
15314
15315 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
15316
15317         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
15318         here.
15319
15320 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15321
15322         * inssel-ppc.brg: another small pre-release workaround:
15323         we don't do overflow detection for long_sub_un.
15324
15325 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15326
15327         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
15328         (also works around a weird ppc bug: 57957).
15329
15330 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
15331
15332         * tramp-ppc.c: trampoline fixes.
15333
15334 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
15335
15336         * mini-ppc.c: fixed typos.
15337
15338 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
15339
15340         * mini-ppc.c, exceptions-ppc.c: more code saves registers
15341         at the top of the stack. Fixed typos. Use a frame registers
15342         for all the methods with exception clauses.
15343
15344 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15345
15346         * exceptions-ppc.c: restore fp registers.
15347
15348 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
15349
15350         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
15351         order from the stack top (moved the stack room to save the
15352         return value for trace after the param area). Fixed corruption
15353         in restoring registers on unwind.
15354
15355 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15356
15357         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
15358
15359 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15360
15361         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
15362         and prolog/epilog for methods that use it. Allow
15363         enough param area room for varargs methods. Fix miguel's
15364         breakage in exception handling.
15365
15366 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15367
15368         * Makefile.am: run genmdesc only on current arch.
15369
15370 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15371
15372         * exceptions-x86.c:
15373         * mini-x86.h: fix the build on windows.
15374
15375 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
15376
15377         * 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.
15378
15379         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
15380
15381         * mini-exceptions.c: New file.
15382         
15383         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
15384         Move some parts of the x86 exception handling code to an 
15385         arch-independent file so it can be shared with other ports.
15386
15387 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
15388
15389         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
15390
15391 2004-04-26  David Waite  <mass@akuma.org>
15392
15393         * driver.c: remove comma from end of enumeration declaration
15394
15395 2004-04-26  Jackson Harper  <jackson@ximian.com>
15396
15397         * driver.c: parse config file before loading first assembly. This
15398         allows the user gac to be enabled/disabled. 
15399         
15400 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
15401
15402         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
15403         simpler mechanism: we do not care what is encoded initially
15404         (branch absolute or relative), we care about the code and its
15405         target.  I kept the old code for reference for now.
15406
15407         The new code tries first to determine if the jump is anywhere in
15408         the -/+32 absolute meg range, if it succeeds, it encodes using the
15409         absolute branch;  If not, it tried to find something in the
15410         relative range, if not, it uses the handle_thunk code. 
15411
15412 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
15413
15414         * exceptions-ppc.c: use the correct ip register on macosx.
15415
15416 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
15417
15418         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
15419
15420 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
15421
15422         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
15423         Raise exception on integer divide by zero by hand since the hw
15424         doesn't support it. Handle NaNs in FP compares.
15425
15426 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
15427
15428         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
15429         code reducing duplication between the platforms and enabled
15430         signal exception handling (on linux for now).
15431
15432 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
15433
15434         * exceptions-ppc.c: more macosx support.
15435
15436 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15437
15438         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
15439
15440 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
15441
15442         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
15443
15444 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
15445
15446         * iltests.il: more tests.
15447
15448 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15449
15450         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
15451         vars as well.
15452
15453 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
15454
15455         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
15456
15457 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15458
15459         * liveness.c: Mark variables as volatile in all basic blocks reachable
15460         from exception clauses.
15461
15462 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
15463
15464         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
15465         inlining.
15466
15467 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
15468
15469         * iltests.il, basic.cs: more tests for regalloc.
15470
15471 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15472
15473         * iltests.il: Some tests for register allocation modifications
15474         I have locally.
15475
15476 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
15477
15478         * exceptions.cs: Add regression test for bug #56782.
15479
15480         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
15481         original stack trace if an exception is rethrown. Fixes #56782. Oh,
15482         the beauty of fixing the same thing in 5 different files...
15483
15484 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
15485
15486         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
15487         methods.
15488
15489 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
15490
15491         * mini.c: Add support for STRWLPARRAY marshalling convention.
15492
15493 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
15494
15495         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
15496         to init the context to setup the regs pointer).
15497
15498 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15499
15500         * exceptions-ppc.c: more exceptions work.
15501
15502 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15503
15504         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
15505         not allowed.
15506
15507 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15508
15509         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
15510         can use the memory directly.
15511
15512         * cpu-pentium.md: Update documentation from a post from Zoltan. 
15513
15514         add x86_add_membase, x86_sub_membase, x86_mul_membase
15515
15516 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15517
15518         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
15519         GENERAL_REGS they were also hardcoded for all PPC ports.
15520
15521         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
15522
15523         Remove hard-coded limit for floating point registers, use
15524         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
15525
15526         Notice that in MacOS X calling conventions you can fit a lot more
15527         floating point values in registers, so I should update the PInvoke
15528         test to excercise the passing of floating point values on the
15529         stack (currently broken).
15530         
15531 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
15532
15533         * tramp-ppc.c (create_trampoline_code): Added
15534         JUMP_TRAMPOLINE_SIZE. 
15535         (ppc_magic_trampoline): Follow the pattern from
15536         x86_magic_trampoline: if code is set to zero, return. 
15537         (create_trampoline_code): Always pass MonoMethod to the jump
15538         trampoline, before it was passing a null.
15539         (mono_arch_create_jump_trampoline): Implement the jump stub, could
15540         share the code with mono_arch_create_jit_trampoline. 
15541
15542         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
15543         implemented.
15544         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
15545         implemented.  
15546
15547         * cpu-g4.md: Added length for jmp instruction, the worst case
15548         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
15549         for save_lmf).
15550
15551 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
15552
15553         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
15554
15555 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
15556
15557         * mini.c: Only set bblock->real_offset when adding a new bblock, and
15558         before each IL instruction.
15559
15560         * mini.c (CEE_BOX): Fix warnings.
15561
15562 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15563
15564         * mini.c: removed a few unused vars and extra whitespace.
15565
15566 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
15567
15568         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
15569         checks.
15570         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
15571         index.
15572         (OP_GETCHR): use the above
15573         (CEE_LDELEMA): use the above.
15574
15575         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
15576         version of the generic impl.
15577         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
15578         (CEE_LDELEMA): use the above.
15579
15580 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15581
15582         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
15583         Fixes #56317.
15584
15585         * iltests.il: Added new regression test for #56317.
15586
15587 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15588
15589         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
15590         under NetBSD. Fixes #56450.
15591
15592         * liveness.c (update_gen_kill_set): Fix previous patch.
15593
15594 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15595
15596         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
15597
15598 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
15599
15600         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
15601         ldsfld and ldsflda.
15602
15603         * inssel-sparc.brg: Add more optimizations.
15604
15605         * mini-sparc.c: Replace multiply/divide with shifts if possible.
15606
15607 2004-04-01  Martin Baulig  <martin@ximian.com>
15608
15609         * mini.c (handle_box): New static function; moved the
15610         implementation of CEE_BOX here.
15611         (mono_method_to_ir): Added `constrained_call' variable.
15612         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
15613         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
15614         mono_method_get_constrained() to get the method.
15615
15616 2004-04-01  Martin Baulig  <martin@ximian.com>
15617
15618         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
15619         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
15620         (mono_method_to_ir): We don't need these macros anymore since
15621         mono_class_get_full() already takes care of it. 
15622
15623 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15624
15625         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
15626         use @function (as doesn't accept #function here) and check the return
15627         value of system and stop if fails.
15628
15629 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15630
15631         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
15632
15633 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
15634
15635         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
15636
15637         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
15638
15639         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
15640         #56223.
15641
15642         * basic-long.cs: Add test for negation of Int64.MinValue.
15643
15644 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
15645
15646         * mini-sparc.c: Update status.
15647
15648         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
15649
15650         * exceptions-sparc.c: Fix return value in filters.
15651
15652         * inssel-sparc.brg: Fix register allocation in some rules.
15653
15654 2004-03-28  Martin Baulig  <martin@ximian.com>
15655
15656         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
15657         if neccessary.  
15658
15659 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
15660
15661         * mini-x86.c (mono_arch_patch_code): Fix warnings.
15662         
15663         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
15664         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
15665         remove unused conv_u4 opcode.
15666
15667         * mini-x86.c: Remove valgrind workaround since it slows down things
15668         even when mono is not run under valgrind.
15669
15670 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
15671
15672         * mini-sparc.c: Update status.
15673
15674         * inssel-sparc.brg: Add some optimizations.
15675
15676         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
15677         future delay slot filling. Add support for varargs, tail calls and JMP.
15678
15679         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
15680         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
15681
15682         * inssel.brg: Fix register allocation in OP_ARGLIST.
15683
15684         * inssel.brg: Fix warnings.
15685
15686 2004-03-25  Martin Baulig  <martin@ximian.com>
15687
15688         * mini.c (inflate_generic_field): Removed.
15689         (mini_get_method): Removed, use mono_get_method_full(),
15690         (mini_get_class): Removed, use mono_class_get_full().
15691         (mono_method_to_ir): Pass our generic context to
15692         mono_field_from_token().        
15693
15694 2004-03-25  Martin Baulig  <martin@ximian.com>
15695
15696         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
15697         of a `MonoMethod *'.
15698         (mini_get_method): Take a `MonoGenericContext *' instead
15699         of a `MonoMethod *'.
15700         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
15701         a new local variable called `generic_context' which holds the
15702         current `MonoGenericContext *'; use it to lookup things.
15703
15704 2004-03-24  Martin Baulig  <martin@ximian.com>
15705
15706         * mini.c (mini_get_class): New static method; if we're inside a
15707         generic instance, inflate the class if neccessary.
15708         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
15709
15710 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
15711
15712         * iltests.il: New regression test for #55976.
15713
15714         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
15715         #55976.
15716
15717 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15718
15719         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
15720         output.
15721
15722 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15723
15724         * liveness.c: Consider SSA stores as well as loads when making vars
15725         volatile.
15726
15727         * exceptions.cs: New regression tests for register allocation.
15728         
15729 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
15730
15731         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
15732         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
15733           domain lock only to protect puntual access to data structures.
15734           Added access lock for sighash, jit_icall_hash_name, 
15735           jit_icall_hash_addr and domain->code_mp.
15736
15737 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
15738
15739         * driver.c: Print SIGSEGV handling method.
15740
15741         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
15742
15743         * mini.c (setup_jit_tls_data): Handle case when this is called
15744         multiple times for a thread.
15745
15746         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
15747         is different from fbxx_un. Fixes #54303. Also use constants instead of
15748         magic numbers in a lot of places.
15749
15750 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
15751
15752         * exceptions.cs: Fix cctor test when --regression is used.
15753
15754 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
15755
15756         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
15757         for Linux/ppc.
15758
15759 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
15760
15761         * inssel-ppc.brg: fixed register assignments for some rules.
15762
15763 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15764
15765         * exceptions.cs: Add test for exceptions in static constructors.
15766
15767         * mini.c (mono_jit_compile_method_with_out): Move the calling of
15768         static constructors outside the domain lock. Fixes #55720.
15769
15770 2004-03-17  Martin Baulig  <martin@ximian.com>
15771
15772         * mini.c (get_generic_field_inst): Removed, this'll never happen.
15773         (inflate_generic_field): Take the `MonoMethod *' instead of the
15774         `MonoClass *' and added support for generic method.
15775         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
15776         have a `field->parent->gen_params', only inflate the field if it's
15777         an open constructed type.
15778
15779 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15780
15781         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
15782         exception object instead of the preconstructed ones.
15783
15784 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15785
15786         * mini.c: reverted changed to sigsegv_signal_handler commited
15787         accidentally in the previous patch.
15788
15789 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15790
15791         * mini.c:
15792         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
15793         running --aot with an old assembly.
15794
15795 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
15796
15797         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
15798         point values.
15799
15800         * mini-sparc.c: Add support for v9 branches with prediction.
15801
15802 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
15803
15804         * mini.c (mini_init): #warning is GNUC only
15805
15806         * mini-sparc.h: implement __builtin_frame_address
15807         and __builtin_return_address for Sun C compiler
15808
15809 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
15810
15811         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
15812
15813 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
15814
15815         * basic-calls.cs: Add test for unaligned byref long argument passing.
15816
15817         * mini-ops.h: Add sparcv9 compare and branch instructions.
15818
15819         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
15820         v9 instructions if we have a v9 cpu.
15821
15822         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
15823         registers for global allocation.
15824
15825         * exceptions-sparc.c: Fixes.
15826         
15827 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
15828
15829         * liveness.c (mono_analyze_liveness): Optimized version.
15830
15831         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
15832
15833         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
15834         sparc work.
15835
15836         * basic-float.cs basic-calls.cs: New regression tests.
15837
15838 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
15839
15840         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
15841         sigaltstack implementation.
15842
15843         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
15844         
15845         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
15846         stuff if SIGSEGV_ON_ALTSTACK is not defined.
15847
15848 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
15849
15850         * mini.c: Fix warnings.
15851         
15852         * mini.c (mono_resolve_patch_target): New function which contains the
15853         arch independent part of the patching process.
15854
15855         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
15856         patching code to a separate function.
15857
15858 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
15859
15860         * mini.c (add_signal_handler): ifdef out on Windows
15861
15862 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
15863
15864         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
15865         cpu-sparc.md: Add exception handling support + other fixes.
15866
15867         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
15868         typed GC detection in --version.
15869
15870         * basic.cs exceptions.cs: New regression tests.
15871
15872         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
15873         the arch specific code can store data during a compilation.
15874
15875         * mini-ops.h: Add OP_SETFRET.
15876
15877         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
15878         function, register a separate icall for each arity, so the icalls can
15879         get a wrapper.
15880         
15881         * mini.c (mono_print_tree): Print negative offsets in a more readable
15882         form.
15883         
15884         * mini.c: Make signal handling work on sparc.
15885         
15886         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
15887
15888         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
15889
15890         * jit-icalls.c: Emulate truncl by aintl on solaris.
15891
15892         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
15893
15894 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
15895
15896         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
15897
15898 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
15899
15900         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
15901         a MarshalByRef type, inline a method that performs the check, taking into
15902         account that the object can be a proxy. Also implemented tow new opcodes:
15903         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
15904         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
15905         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
15906
15907 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
15908
15909         * mini-ppc.c: if a relative branch displacement is too big
15910         but it points to and area reachable with an absolute branch, 
15911         avoid the thunks.
15912
15913 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
15914
15915         * mini.c: optimize small copies in cpblk.
15916
15917 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
15918
15919         * basic-calls.cs basic-float.cs: New regression tests.
15920
15921         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
15922         negative offsets from %fp. Implement localloc. Fix local register 
15923         allocation. Fix the case when the this argument needs to be saved to
15924         the stack. Implement some missing opcodes.
15925
15926 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
15927
15928         * mini.c (mini_method_compile): Reenable global regalloc in methods
15929         with exception handlers.
15930
15931         * linear-scan.c (mono_varlist_sort): Fix warning.
15932
15933         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
15934
15935         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
15936         regalloc costs.
15937
15938         * liveness.c: Make all variables uses in exception clauses volatile, to
15939         prevent them from being allocated to registers. Fixes #42136.
15940
15941 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
15942
15943         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
15944         causes regressions.
15945
15946         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
15947         argument to mono_arch_regalloc_cost.
15948
15949         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
15950         precisely.
15951
15952 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
15953
15954         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
15955         Make the cost of allocating a variable to a register arch dependent.
15956
15957         * basic-calls.cs: Fix compilation of tests.
15958         
15959         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
15960         helper function to cut back on the number of #ifdefs needed.
15961
15962         * mini-ppc.c: Fix compilation.
15963
15964         * basic-calls.cs: New regression tests.
15965
15966         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
15967
15968         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
15969         of l0 since that is callee saved.
15970
15971         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
15972         to virtual calls.
15973
15974         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
15975         of delay instruction.
15976
15977         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
15978
15979         * mini.h (MonoCallInst): Add 'virtual' flag.
15980
15981         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
15982
15983 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
15984
15985         * *.cs: New regression tests.
15986
15987         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
15988         work.
15989
15990         * mini.c (mono_runtime_install_handlers): Fix build.
15991
15992         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
15993         'signal_stack_size' members.
15994
15995         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
15996         alternate signal stack.
15997
15998         * exceptions-x86.c: Add stack overflow handling.
15999
16000         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
16001         functions to arch independent code.
16002
16003         * mini.c (mono_print_tree): Print more detailed info for load_membase
16004         opcodes.
16005         
16006 2004-02-23  Martin Baulig  <martin@ximian.com>
16007
16008         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
16009
16010 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
16011
16012         * mini-x86.c: fixed reg allocation for div/rem.
16013
16014 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
16015
16016         * driver.c (mono_main): Report some configuratio options on --version.
16017
16018 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
16019
16020         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
16021         low in the address space. Correctly flush memory in thunks where we
16022         output native code.
16023
16024 2004-02-20  Martin Baulig  <martin@ximian.com>
16025
16026         * mini.c (mini_get_method): New static method; inflate all generic
16027         methods and methods in open generic instances.
16028         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
16029         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
16030
16031 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
16032
16033         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
16034
16035         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
16036
16037 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
16038
16039         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
16040
16041         * mini-sparc.c (flushi mono_arch_output_basic_block): make
16042         it compile using Sun's compiler.
16043
16044 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
16045
16046         * 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.
16047
16048         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
16049
16050 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16051
16052         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
16053         code.
16054         * mini-ppc.c: handle calls outside of the allowed range with thunks
16055         allocated using the code manager.
16056         * tramp-ppc.c: use the code manager to hold generated native code.
16057         Fixed the magic trampoline to just patch vtable entries.
16058
16059 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
16060
16061         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
16062         independent file.
16063
16064 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
16065
16066         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
16067         PPC.
16068
16069         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
16070         if we have a working __thread implementation.
16071
16072         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
16073         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
16074
16075 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
16076
16077         * mini-x86.c: Fix compilation under gcc 2.
16078         
16079 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
16080
16081         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
16082         contains a call to the wrapped function.
16083
16084         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
16085         OP_<CALL>_IMM opcodes, and use them under X86.
16086         
16087         * mini.c (mono_jit_find_compiled_method): Fix warning.
16088
16089         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
16090
16091         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
16092
16093         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
16094         functionality to mini.c.
16095
16096         * mini.c (mono_create_jump_trampoline): New function to create a jump
16097         trampoline. Return a compiled method instead of a trampoline if it
16098         exists. Add a cache for jump trampolines.
16099
16100         * mini.c (mono_jit_find_compiled_method): New function to return a
16101         compiled method if it exists.
16102
16103         * mini-x86.c: Call mono_create_jump_trampoline instead of 
16104         mono_arch_create_jit_trampoline.
16105
16106         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
16107         a jump trampoline. Fixes #52092.
16108         
16109 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
16110
16111         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
16112         which is not up-to-date. Add check_corlib_version () instead.
16113
16114         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
16115         have to call it.
16116         
16117         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
16118         since newer valgrind versions do not need it.
16119
16120         * mini.c (mono_jit_compile_method_with_opt): New helper function to
16121         compile a method with a given set of optimizations.
16122
16123         * mini.c: Compile icall wrappers on-demand instead of at startup.
16124
16125         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
16126         wrapper for an icall.
16127
16128 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
16129
16130         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
16131         #54063.
16132
16133         * iltests.il: Add test for non-empty stack before switch instruction.
16134
16135 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
16136
16137         * mini.c: Add support for new stringbuilder marshalling conventions.
16138
16139         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
16140
16141 2004-02-01  Martin Baulig  <martin@ximian.com>
16142
16143         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
16144         in `ginst->mtype_argv'.
16145
16146 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
16147
16148         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
16149         facilitate grepping.
16150
16151 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
16152
16153         * mini.c: fixed buglet in initobj generic implementation for references.
16154
16155 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
16156
16157         * Makefile.am: make the version script conditional.
16158         * jit-icalls.c: handle missing truncl().
16159
16160 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
16161
16162         * exceptions.cs: Add more tests for double->int conversion.
16163
16164         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
16165         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
16166
16167 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
16168
16169         * driver.c: make --verbose --version emit an error
16170         if the loaded corlib doesn't match the runtime version.
16171
16172 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
16173
16174         * mini-ppc.h: export ppc_patch().
16175         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
16176         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
16177         on par or better than on MacOSX.
16178
16179 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
16180
16181         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
16182         mono_lookup_pinvoke_call.
16183
16184         * mini-x86.c: Under windows, the default pinvoke calling convention is
16185         stdcall. Fixes #52834.
16186
16187         * mini.c (optimize_branches): Add an upper bound to the number of
16188         iterations to prevent infinite loops on strange loops. Fixes #53003.
16189
16190 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
16191
16192         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
16193         and ISINST. Fixes #52093.
16194
16195         * objects.cs (test_0_vector_array_cast): New tests.
16196         
16197 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
16198
16199         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
16200         checking in Array.Set ().
16201
16202         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
16203         #52590.
16204
16205         * object.cs (test_0_multi_array_cast): New regression test.
16206
16207 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
16208
16209         * exceptions-ppc.c: fix build on Linux/PPC.
16210
16211 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
16212
16213         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
16214         running under valgrind.
16215         (x86_magic_trampoline): Fix build bustage.
16216
16217         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
16218         negative values as well. This is needed for the encoding of the line number
16219         info, since sometimes the line numbers are not in increasing order.
16220
16221 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
16222
16223         * cpu-pentium.md (localloc): Increase the size of the localloc 
16224         instruction since it is a loop under Win32.
16225
16226         * debug-mini.c (record_line_number): Get rid of unneccesary memory
16227         allocation.
16228
16229 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
16230
16231         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
16232         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
16233         Max Horn (max@quendi.de). Fix file names in comments.
16234
16235 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
16236
16237         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
16238         avoid stack overflow.
16239         (replace_usage): Avoid uninitialized variable warnings.
16240
16241         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
16242         and taking the address of valuetype variables.
16243
16244 2004-01-03  Patrik Torstensson
16245
16246         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
16247         for other purposes than FP later on.
16248
16249 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
16250
16251         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
16252         of tail calls.
16253
16254 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16255
16256         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
16257
16258 2003-12-30  Patrik Torstensson <p@rxc.se>
16259
16260         * mini-x86.h: Decreased number of availiable fp regs.
16261         Solves corner cases with FP spilling.
16262
16263 2003-12-23  Patrik Torstensson <p@rxc.se>
16264
16265         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
16266         for floating point stack tracking / spilling on x86. 
16267         Fixes bug #49012.
16268         
16269         * basic-float.cs: added float mul overflow test.
16270
16271 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
16272
16273         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
16274
16275 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16276
16277         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
16278         supports for cond branches that overflow the immediate
16279         overflow offset. mcs can compile simple programs.
16280
16281 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16282
16283         * exceptions-ppc.c: exception handling support wip:
16284         finally handlers get run on exception.
16285
16286 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
16287
16288         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
16289         profiling.
16290
16291 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16292
16293         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
16294         initial support for stack walking and unwinding.
16295
16296 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
16297
16298         * driver.c (mono_main): Make corlib-out-of-sync message more 
16299         descriptive. Also remove verify_corlib call.
16300
16301 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16302
16303         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
16304         not overlap with other call's arguments, too.
16305
16306 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
16307
16308         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
16309         move to arch-specific code the choice of arch-specific
16310         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
16311         * mini.c: ensure emulation calls will not interleave
16312         with other calls.
16313
16314 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
16315
16316         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
16317         the magic trampoline stack frame is dropped before executing
16318         the new method.
16319
16320 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
16321
16322         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
16323         and integer to fp conversions. Added support for overflowing
16324         arguments on the stack. Reserve a couple more registers as temps.
16325         Added support for aot compilation (as output still needs to be
16326         tweaked, though).
16327
16328 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16329
16330         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
16331         Don't overwrite return register in some corner cases.
16332
16333 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
16334
16335         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
16336         static constructors when AOT compiling.
16337
16338         * driver.c (mono_main): Call mono_check_corlib_version.
16339
16340 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16341
16342         * cpu-g4.md, basic.cs: fixed div target register.
16343
16344 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
16345
16346         * mini-ppc.c, basic.cs: shl_imm fix with test.
16347
16348 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16349
16350         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
16351         structures by value. Misc fixes.
16352         * objects.cs: more tests.
16353
16354 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
16355
16356         * mini-ppc.c: lconv.ovf.i implemented.
16357
16358 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16359
16360         * mini.c:
16361         (mini_init): don't error out if someone already called g_thread_init.
16362
16363 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16364
16365         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
16366         to be any type per the spec. Fix abnormal memory usage when
16367         the same object is repeatedly thrown.
16368
16369 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
16370
16371         * mini.c: check for overruns in IL code.
16372
16373 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
16374
16375         * TODO: Add/remove some todo entries.
16376
16377 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
16378
16379         * driver.c (mono_main): Call mono_verify_corlib.
16380
16381 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
16382
16383         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
16384         This has been moved to mini.c
16385         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
16386         type being casted is marshalbyref it could be a proxy, so instead of
16387         emitting the type check code, emit a call to a runtime method that will
16388         perform the check by calling CanCastTo if needed.
16389
16390 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
16391
16392         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
16393         methods with large stack frames under Win32.
16394
16395 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
16396
16397         * Makefile.am: Distribute regression tests.
16398
16399         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
16400         at the end instead of inserting each variable into the sorted list.
16401
16402         * linear-scan.c (mono_varlist_sort): New helper function.
16403         
16404 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16405
16406         * mini.c: ensure arguments and locals are within bounds.
16407
16408 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16409
16410         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
16411         related fixes.
16412
16413 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16414
16415         * mini.c (mono_cprop_copy_values): Fix crash.
16416
16417         * aot.c: Set verbosity back to 0.
16418         
16419 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16420
16421         * regalloc.c: complete memory leak fix by Laurent Morichetti
16422         (l_m@pacbell.net).
16423
16424 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16425
16426         * driver.c (main_thread_handler): Revert the previous patch.
16427
16428         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
16429         under valgrind.
16430
16431         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
16432         memory from the memory pool.
16433
16434         * driver.c (main_thread_handler): Turn on all optimizations when
16435         --aot is used.
16436
16437         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
16438         an array for better performance.
16439
16440         * regalloc.c (mono_regstate_assign): Fix memory leak.
16441
16442         * debug-mini.c (mono_debug_serialize_debug_info): New function to
16443         serialize the debug info.
16444
16445         * debug-mini.c (mono_debug_add_aot_method): New function to load the
16446         debug info from the serialized representation.
16447
16448         * aot.c: Save debug info into the generated file and load it when 
16449         loading a method.
16450
16451         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
16452
16453 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16454
16455         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
16456         More FP-related fixes.
16457
16458 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
16459
16460         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
16461         and register allocation buglet. Hello world now runs.
16462
16463 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16464
16465         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
16466         * tramp-ppc.c: fixed class init trampoline.
16467         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
16468
16469 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16470
16471         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
16472         mini.c: more ppc changes/fixes.
16473
16474 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16475
16476         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
16477         Also optimize the case when the arguments are the same in the caller 
16478         and in the callee.
16479
16480         * iltests.il: Add tests for tail calls with valuetype arguments.
16481
16482 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16483
16484         * mini-ppc.c: fixes for struct return type.
16485
16486 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
16487
16488         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
16489         mono_spillvar_offset() to arch-specific code.
16490
16491 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
16492
16493         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
16494
16495 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16496
16497         * exceptions-x86.c: Fix stack space leaks.
16498         
16499         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
16500         registers from the lmf if the method has save_lmf set.
16501
16502 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
16503
16504         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
16505         of icall wrappers into InvokeInDomain, since these are now per-domain.
16506
16507 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
16508
16509         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
16510         make some opcode emulation and intrinsic ops enabled/disabled 
16511         according to the architecture. More fixes.
16512
16513 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
16514
16515         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
16516
16517 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16518
16519         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
16520         arch-specific handling for 'this' and struct return type to
16521         arch-specific code.
16522
16523 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16524
16525         * aot.c: prevent divide by zero error when reporting (it happened with
16526         Accessibility.dll).
16527
16528 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
16529
16530         * mini.h (inst_switch): Remove unused macro.
16531
16532 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16533
16534         * aot.c:
16535         (load_aot_module): free 'info->methods' and 'info' properly. No more
16536         "free(): invalid pointer blah" messages when you have an old aot
16537         compiled assembly.
16538
16539 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
16540
16541         * jit-icalls.c, mini.c: Added support for context static fields.
16542
16543 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16544
16545         * mini.c (mono_method_blittable): Methods which set LastError are not 
16546         blittable either. Fixes #51108.
16547         
16548 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16549
16550         * mini.c: flush icache.
16551         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
16552
16553 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16554
16555         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
16556
16557 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
16558
16559         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
16560         safe on IA32.
16561
16562         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
16563         vararg calls.
16564
16565         * inssel.brg (CEE_MKREFANY): Fix AOT case.
16566
16567 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
16568
16569         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
16570         instruction when the result is discarded.
16571
16572         * iltests.il (test_0_div_regalloc): New regression test.
16573
16574         * arrays.cs: Fix compilation error.
16575
16576 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
16577
16578         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
16579         float rules to inssel-x86.brg: sane architectures with FP registers
16580         don't need to implement these rules.
16581
16582 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16583
16584         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
16585
16586 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16587
16588         * mini.h, inssel-long32.brg: fixed endianess issues in int64
16589         implementation of 32 bit systems.
16590
16591 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16592
16593         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
16594         (Jeroen Zwartepoorte).
16595
16596 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
16597
16598         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
16599         the caller and the callee matches.
16600         
16601         * mini.c (mono_method_to_ir): Add comment.
16602
16603         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
16604         signbit is missing on some platforms.
16605
16606 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
16607
16608         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
16609
16610         * mini.c (setup_jit_tls_data): Call the new function.
16611         
16612         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
16613
16614         * mini-x86.c: Add experimental support for fast access to the lmf
16615         structure under NPTL/Linux 2.6.x.
16616
16617 2003-11-06  Martin Baulig  <martin@ximian.com>
16618
16619         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
16620         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
16621         the debugger.
16622
16623 2003-11-02  Martin Baulig  <martin@ximian.com>
16624
16625         * mini.c (inflate_generic_field): New static method.
16626         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
16627         generic instance and the field is declared in a generic type, call
16628         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
16629
16630 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
16631
16632         * mini.h mini.c (mono_method_same_domain): New function to return
16633         whenever the caller and the callee are in the same domain.
16634
16635         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
16636
16637 2003-10-30  Martin Baulig  <martin@ximian.com>
16638
16639         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
16640         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
16641         method parameters.
16642         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
16643         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
16644
16645 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
16646
16647         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
16648         propagation.
16649
16650         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
16651         object here, so it is in the correct appdomain etc.
16652
16653 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
16654
16655         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
16656         already done.
16657         (mono_method_to_ir): Avoid freeing the type created returned from
16658         mono_type_create_from_typespec, since it is put into an internal cache
16659         by the function. Fixes pointer.exe.
16660
16661         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
16662         trampolines for icalls and pinvokes as well. Fixes #33569.
16663
16664 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
16665
16666         * mini.c: Update after appdomain changes.
16667
16668         * mini.c (mono_jit_compile_method_inner): Allways compile native
16669         method wrappers in the root domain, since there can only be one
16670         instance of them, whose address is stored in method->info.
16671
16672 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
16673
16674         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
16675         environment variable. Instead detect automatically whenever running
16676         under valgrind using the magic macro RUNNING_ON_VALGRIND from
16677         valgrind.h.
16678
16679 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
16680
16681         * trace.c, trace.h: New files that implement the new trace option
16682         parsing. 
16683
16684         * driver.c: Document new --trace options.
16685
16686         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
16687         mini-x86.c: Apply:
16688
16689         -       if (mono_jit_trace_calls)
16690         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
16691
16692         * mini.h: prototypes.
16693         
16694 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
16695
16696         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
16697
16698         * mini.c inssel.brg: Implement typedefbyref opcodes.
16699
16700         * mini.c (mono_jit_compile_method): Remove unused local variable.
16701
16702         * mini.c (mono_jit_compile_method_inner): Ditto.
16703         
16704 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
16705
16706         * tramp-x86.c (x86_class_init_trampoline): Fix build.
16707         
16708         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
16709
16710 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
16711
16712         * mini.c (mono_no_aot): Remove unused global variable.
16713
16714         * mini.c: Thread safety fixes.
16715
16716 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
16717
16718         * mini.c (mono_create_class_init_trampoline): Add a lock around
16719         class_init_hash_addr.
16720
16721         * arrays.cs (test_0_newarr_emulation): Add new regression test for
16722         #30073.
16723
16724         * mini.c: Decompose the NEWARR instruction before decomposing its
16725         arguments. Fixes #30073.
16726
16727 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
16728
16729         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
16730         convention.
16731
16732 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
16733
16734         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
16735
16736         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
16737
16738         * driver.c: Add support for compiling icall wrappers to --compile.
16739
16740 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
16741
16742         * inssel.brg: The empty value in class->interface_offsets is -1, not
16743         0. Fixes #49287.
16744
16745 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
16746
16747         * objects.cs: New test for 'is' operator on an array of interfaces.
16748
16749 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
16750
16751         * tramp-ppc.c: update trampoline code to support jumps
16752         and class initialization.
16753
16754 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
16755
16756         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
16757
16758         * inssel.brg (OP_UNBOXCAST): Fix #46027.
16759
16760         * inssel.brg (OP_UNBOX): Remove unused rule.
16761
16762         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
16763         region instead of one for each method. Fixes #47813.
16764
16765 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
16766
16767         * exceptions.cs (test_0_nested_finally): New regression test for
16768         nested exception handlers.
16769
16770         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
16771
16772         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
16773
16774         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
16775         inlining.
16776
16777         * mini.c (mono_method_check_inlining): Make the inlining limit 
16778         configurable by an environment variable.
16779         
16780         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
16781
16782         * mini.h: Bump AOT file version.
16783
16784         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
16785         token, store the image along with the token, since the token might not 
16786         refer to the same image as the method containing the relocation, 
16787         because of inlining.
16788
16789 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
16790
16791         * mini.c (mono_precompile_assemblies): New function to compile
16792         all methods in all loaded assemblies.
16793
16794         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
16795
16796         * regalloc.h regalloc.c (MonoRegState): Change the type of 
16797         iassign and fassign to int*, since they can contain large negative
16798         values if the register is spilled. Also added some comments. Fixes
16799         #45817.
16800
16801         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
16802         under Win32. Fixes #42964.
16803
16804 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
16805
16806         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
16807
16808         * aot.c: Added support for AOT compiling methods which contain calls
16809         to wrappers. Currently, only remoting-invoke-with-check wrappers are
16810         handled.
16811         
16812         * driver.c (compile_all_methods): Run the compilation in a thread
16813         managed by mono. Fixes #44023.
16814
16815         * mini.c (mono_codegen): Print full method name in verbose output.
16816
16817         * mini-x86.c (mono_arch_patch_code): Fix warning.
16818         
16819         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
16820         jumps, since the method we are jumping to might be domain-specific.
16821
16822         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
16823
16824 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
16825
16826         * inssel.brg: string chars are unsigned.
16827
16828 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
16829
16830         * TODO: New todo item.
16831
16832         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
16833         which calls mono_runtime_class_init and patches the call site to
16834         avoid further calls.
16835         (mono_arch_create_class_init_trampoline): New arch specific function 
16836         to create a class init trampoline.
16837         (create_trampoline_code): Generalized so it can create
16838         class init trampolines as well.
16839
16840         * mini.c (helper_sig_class_init_trampoline): New helper variable.
16841         (mono_create_class_init_trampoline): New function to create and cache
16842         class init trampolines.
16843         (mono_find_class_init_trampoline_by_addr): New function to lookup the
16844         vtable given the address of a class init trampoline. Used by the
16845         patching process.
16846         (mono_codegen): Generate a call to a trampoline instead of
16847         mono_runtime_class_init in LDSFLD[A].
16848         (mono_codegen): Add relocations for the new trampoline.
16849         
16850         * mini.h mini-x86.c aot.c: Added a new relocation type: 
16851         MONO_PATCH_INFO_CLASS_INIT.
16852
16853         * mini.h: Bump AOT version number.
16854
16855         * aot.c: Create a copy of the loaded code instead of using the original
16856         so methods which call each other will be close in memory, improving
16857         cache behaviour.
16858         
16859         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
16860         patch since it breaks the regression tests.
16861         
16862         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
16863         for the register saving instruction sequence since the 
16864         frame_state_for function in glibc 2.3.2 don't seem to detect it.
16865
16866 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
16867
16868         * TODO: Fix todo item && remove another.
16869
16870 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
16871
16872         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
16873         previous checkin.
16874
16875         * aot.c: Moved the check for MONO_LASTAOT into the initialization
16876         function of the module.
16877
16878         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
16879         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
16880         --no-aot command line option.
16881
16882 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
16883
16884         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
16885         by Bernie Solomon (bernard@ugsolutions.com).
16886
16887         * inssel.brg: Refactor the interface offset table related code into
16888         its separate functions and add support for the AOT case.
16889
16890 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
16891
16892         * aot.c (mono_aot_get_method_inner): Fix memory leak.
16893         
16894         * aot.c: Added mono_aot_verbose variable and made all debugging
16895         output depend on the value of this variable.
16896
16897         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
16898         method_label and info_label.
16899
16900         * mini.h mini-x86.c aot.c: Added a new relocation type 
16901         MONO_PATCH_INFO_IID for klass->interface_id.
16902
16903         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
16904         the MonoJitInfo structure.
16905
16906         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
16907         a non-root appdomain in shared mode.
16908
16909 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
16910
16911         * aot.c: make aot loader less verbose. Remove free of unused variable.
16912
16913 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
16914
16915         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
16916
16917         * .cvsignore: Added *.dll.
16918
16919         * mini.c (mono_print_tree_nl): New function callable while debugging.
16920
16921         * mini.c (mono_print_code): Export this.
16922
16923         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
16924         patched code.
16925
16926 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
16927
16928         * mini.h (MonoCompile): Added 'jit_info' field.
16929
16930         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
16931         the cfg structure, since it is needed by the AOT compiler.
16932
16933         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
16934
16935         * aot.c: A major rewrite. Changes include:
16936         - save exception tables for methods which have them.
16937         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
16938         to g_module_symbol.
16939         - reworked the file format so it is now much smaller and needs
16940         fewer relocation entries.
16941         
16942 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
16943
16944         * aot.c (load_aot_module): Fix build bustage on platforms without
16945         Boehm GC.
16946
16947 2003-09-04  Martin Baulig  <martin@ximian.com>
16948
16949         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
16950
16951 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
16952
16953         * TODO: Some new optimization ideas.
16954
16955         * aot.c: Move AOT module loading logic here from mono_assembly_open.
16956
16957         * aot.c: Save the optimization flags used to compile the code into
16958         the AOT module.
16959
16960         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
16961         support emitting domain specific code.
16962         
16963         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
16964         no longer domain neutral. It can be made domain neutral by compiling 
16965         with --optimize=shared.
16966
16967         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
16968         between appdomains.
16969
16970         * driver.c mini.h mini.c: New --no-aot debugging option which disables
16971         loading of AOT code.
16972
16973         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
16974         
16975         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
16976         if there is no domain neutrality information.
16977
16978 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
16979
16980         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
16981         format version into the generated library.
16982
16983         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
16984         callee method into the caller since one of them could be shared.
16985
16986         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
16987         system exceptions from AOT code now works.
16988
16989         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
16990         method if it is domain neutral and the callee is not.
16991
16992         * graph.c (cfg_emit_one_loop_level): Fix warning.
16993
16994 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
16995
16996         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
16997         last checkin.
16998
16999 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
17000
17001         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
17002         is needed  by code which is executed before mono_runtime_init ().
17003         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
17004         
17005         * mini.c (mono_thread_abort): Fix warning.
17006         (mono_jit_compile_method): Call static constructor in the AOT case too.
17007
17008         * aot.c (mono_compile_assembly): Fix warning.
17009
17010 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17011
17012         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
17013
17014 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
17015
17016         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
17017
17018         * cpu-pentium.md: Fix the length of call opcodes so they include the
17019         ESP restoring instruction. Fixes #47968.
17020
17021 2003-08-28  Martin Baulig  <martin@ximian.com>
17022
17023         * mini-x86.c (mono_arch_call_opcode): Added support for
17024         MONO_TYPE_GENERICINST.
17025
17026         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
17027
17028 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
17029
17030         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
17031         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
17032
17033         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
17034         metadata_section.
17035
17036 2003-08-26  Martin Baulig  <martin@ximian.com>
17037
17038         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
17039         when reporting an error, set this to the actual error location.
17040         (mono_method_to_ir): Report the correct error location if
17041         get_basic_blocks() returned an error.
17042
17043 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
17044
17045         * mini.c (mono_type_blittable): OBJECT is not blittable.
17046         (mono_method_blittable): Methods which have marshalling descriptors
17047         are not blittable either. Fixes #47842.
17048
17049 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
17050
17051         * driver.c mini.c: Use an environment variable instead of a global 
17052         variable. Also fix the build.
17053
17054         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
17055         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
17056         reporting this. 
17057
17058         * driver.c mini.c: Added --with-valgrind option to turn off some
17059         code which prevents mono from running under valgrind.
17060
17061         * mini.c (mono_emit_call_args): Fixed warning.
17062
17063         * mini.c (mono_emulate_opcode): Fixed warning.
17064
17065 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17066
17067         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
17068         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
17069         regalloc.c, regalloc.h: specify available registers in arch-specific
17070         code and support floats in the regallocator (patch by Laurent Morichetti 
17071         <l_m@pacbell.net>)
17072
17073 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17074
17075         * mini.c: mono_thread_current() can be called only after
17076         mono_runtime_init(): rearrange code to not call it early on.
17077
17078 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17079
17080         * mini.c: allocate jump tables in the code mempools.
17081
17082 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17083
17084         * mini.c, mini.h: make sure per-thread data allocated by the jit is
17085         freed.
17086
17087 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
17088
17089         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
17090         12 to 16.  This fixes bug #47453.
17091
17092
17093 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
17094
17095         * mini-ppc.c: fixed indexed load and unsigned compares.
17096
17097 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
17098
17099         * mini.c: reenabled installation of handler for
17100           thread abort signal.
17101
17102 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17103
17104         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
17105         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
17106         until it's fixed and actually useful.
17107
17108 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17109
17110         * inssel-long32.brg: couple more opcodes implemented.
17111
17112 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
17113         
17114         * mini-sparc.c: Even more opcodes implemeted.
17115
17116 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
17117
17118         * mini-sparc.c: More opcodes implemented.
17119
17120 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
17121
17122         * mini-sparc.c: More opcodes implemented.
17123
17124 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
17125
17126         * inssel-sparc.brg: Add some needed rules.  Direct
17127         copy from PPC.
17128         * Makefile.am: Use inssel-sparc.brg
17129         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
17130         an assert happy for now.
17131
17132 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
17133
17134         * mini-sparc.c: Fixed compile errors.
17135         * exceptions-sparc.c: Same.  We now produce a mono binary 
17136         on sparc-linux.  Yea.
17137
17138 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
17139
17140         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
17141         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
17142         They compile, but do not work.
17143
17144 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17145
17146         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
17147         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
17148         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
17149         (ct@gentoo.org).
17150
17151 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17152
17153         * mini.c: more opcodes implemented and better support for generics.
17154
17155 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17156
17157         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
17158         * mini.c, mini.h: first cut at generics support: some new instructions 
17159         added and changed the behaviour of some of the existing ones.
17160
17161 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
17162
17163         * mini.c: Removed definition of metadata_shared mutex here.
17164
17165 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17166
17167         * mini-x86.c: make vararg calls work for instance methods.
17168
17169 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
17170
17171         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
17172         returns the arguments in a separte list, now.
17173
17174 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17175
17176         * aot.c, mini.c: updates for array type representation changes.
17177
17178 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
17179
17180         * mini.c: register function to perform jit shutdown.
17181
17182 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17183
17184         * mini.c: use a faster allocator if possible.
17185
17186 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17187
17188         * aot.c: some cleanups and portability changes.
17189
17190 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17191
17192         * mini.c: use faster allocation for CEE_BOX if possible.
17193
17194 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17195
17196         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
17197         Moved inlined mempcy code to its own function so that is can be
17198         reused. Added an inline memset function as well (optimized initobj).
17199         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
17200
17201 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17202
17203         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
17204
17205 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
17206
17207         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
17208         arch code can setup the cpu for CLR execution, if needed.
17209         We use it on x86 to set the precision of FP operations.
17210
17211 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
17212
17213         * mini.c: disable some optimizations if we can guess they'll cost too
17214         much for a given method.
17215
17216 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17217
17218         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
17219         
17220 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17221         * mini.h mini.c mini-x86.c: Added instruction level coverage 
17222         info collection support.
17223
17224 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17225
17226         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
17227         is now implemented in the profiling API. Get rid of a couple of
17228         unnecessary global variables.
17229
17230 2003-06-15  Nick Drochak <ndrochak@gol.com>
17231
17232         * basic-long.cs: tests for negative values for bigmul, and unsigned.
17233         * cpu-g4.md: add op_bigmul and op_bigmul_un
17234         * cpu_pentium.md: add op_bigmul_un
17235         * inssel-long32.brg: add rule for unsigned bigmul
17236         * mini-ops.h: define OP_BIGMUL_UN
17237         * mini-x86.c: THE BUG: handle (un)signed properly
17238         * mini.c: choose unsigned opcode if needed.
17239         This set of patches fixes bug #44291
17240
17241 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
17242
17243         * mini.c (optimize_branches): improved to handle all kinds of
17244         conditional branches.
17245
17246 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17247
17248         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
17249         don't raise exceptions.
17250
17251 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17252
17253         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
17254         to arch-specific files.
17255
17256 2003-06-09  Martin Baulig  <martin@ximian.com>
17257
17258         * Makefile.am (libs): Added $(LIBGC_LIBS).
17259
17260 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
17261
17262         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
17263         and OP_ATAN (fixes bug#44293).
17264
17265 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
17266
17267         * Makefile.am, mini-x86.c: rename cpu description array to
17268         pentium_desc, since some compilers define the 'pentium' preprocessor
17269         symbol.
17270
17271 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
17272
17273         * mini.c (mini_select_instructions): add explicit branch if the
17274         following block is not the false target of a conditional branch -
17275         we need this with any optimization that reorder or remove bblocks
17276
17277         * mini.c (optimize_branches): bug fixes
17278
17279 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
17280
17281         * mini.c (mono_method_to_ir): inline static readonly fields
17282
17283         * ssa.c (fold_tree): start cfold support for long (very simple
17284         cases only)
17285
17286         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
17287
17288 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17289
17290         * inssel.brg: fixed memcpy (bug #44219).
17291
17292 2003-06-05  Dick Porter  <dick@ximian.com>
17293
17294         * driver.c: Set the glib log levels to not abort if g_message
17295         recurses.
17296
17297         g_set_prgname() has to happen before mini_init() so that the
17298         process handle gets the info.
17299         
17300 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17301
17302         * driver.c: add intrins to the default optimizations to get wider
17303         exposure.
17304
17305 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17306
17307         * mini.h: some large basic blocks will overflow a 16-bit
17308         integers for symbolic registers.
17309
17310 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17311
17312         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
17313         (mono_arch_output_basic_block): fix bug 43499 
17314
17315 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17316
17317         * mini.c: kill duplicated definition of mono_debug_format.
17318
17319 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
17320
17321         * mini-x86.c, arrays.cs: fixed register allocation bug.
17322
17323 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17324
17325         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
17326
17327         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
17328
17329 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17330
17331         * mini.c:
17332         (print_method_from_ip): also print source location information if
17333         available.
17334
17335 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
17336
17337         * mini.c (mono_find_block_region): bug fix in region code
17338         (mini_method_compile): enable removing unreachable code again, but
17339         only in methods without exception clauses.
17340
17341 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17342
17343         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
17344         Implemented arglist opcode and handling of TypedReference type.
17345         Fixed x86 call convention when a structure is returned.
17346         Minimal support for calling static vararg methods.
17347
17348 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
17349
17350         * mini.c (mini_method_compile):  always remove unreachable code,
17351         because the code in them may be inconsistent  (access to dead
17352         variables for example).
17353
17354 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17355
17356         * driver.c, debug-mini.c: warning fixes.
17357
17358 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
17359
17360         * Makefile.am, jit.h, mini.h: install header for embedding mono.
17361
17362 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
17363
17364         * mini.c: thread-static fields are registered in mono_class_vtable(),
17365         so ensure the function is called before checking for them.
17366
17367 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
17368
17369         * mini.c (optimize_branches): fix for bug 43586
17370
17371         * jit-icalls.c (mono_llmult_ovf): added an additional check for
17372         overflow (fixes Bug #43639)
17373
17374 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17375
17376         * mini.c, objects.cs: allow the use of stobj for primitive types.
17377
17378 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17379
17380         * mini.c: be less strict about argument checking until we support
17381         running the verifier.
17382
17383 2003-05-27  Nick Drochak <ndrochak@gol.com>
17384
17385         * basic-long.cs: tests for (ulong)int * (ulong)int also
17386         * mini.c: use the same trick for (ulong)int * (ulong)int
17387
17388 2003-05-27  Nick Drochak <ndrochak@gol.com>
17389
17390         * basic-long.cs: add regression test for (long)int * (long)int
17391         * cpu-pentium.md: add op_bigmul specification
17392         * inssel-long32.brg: add OP_BIGMUL rule
17393         * mini-ops.h: add OP_BIGMUL
17394         * mini-x86.c: register allocator: handle case where src1 needs to be
17395         in EAX.
17396         * mini.c: substitute special BIGMUL opcode in the tree for 
17397         (long)int * (long)int
17398
17399 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
17400
17401         * jit-icalls.c: call the type ctor on field access if needed.
17402
17403 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17404
17405         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
17406         to a method (including results of ldelema, bug#43207).
17407
17408 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
17409
17410         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
17411         colors to show exception handler blocks.
17412
17413         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
17414         (fix for pinvoke7.cs).
17415
17416 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17417
17418         * mini.h, mini.c: ensure correct initialization order for types that
17419         require it. Prepare for lazy compilation of jit icall wrappers.
17420         Provide a name for opcode emulation to reduce unneeded mallocing.
17421
17422 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
17423
17424         * mini-x86.c: better register restoring code and profiling
17425         support for tail calls.
17426
17427 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17428
17429         * mini.h, driver.c: prepare for leaf methods optimization.
17430
17431 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17432
17433         * mini.c: get targets of branches before converting a method.
17434
17435 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
17436
17437         * mini.c (optimize_branches): added some experimental code (disbaled) 
17438
17439 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
17440
17441         * mini.c (optimize_branches): fix branch to branch optimization 
17442
17443         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
17444
17445         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
17446
17447         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
17448
17449         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
17450         if needed.
17451
17452 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
17453
17454         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
17455         enable use of interface variables again.
17456
17457         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
17458         I1 to registers because there is no simply way to sign extend 8bit
17459         quantities in caller saved registers on x86.
17460
17461         * inssel-float.brg: set costs of some rules to 2 so
17462         that monobure always select the arch. specific ones if supplied,
17463         regardless of the order we pass the files to monoburg.
17464
17465 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17466
17467         * mini.c, mini-x86.c: since the magic trampoline for jumps
17468         can't patch the code directly, we do it as soon as the
17469         method gets compiled.
17470
17471 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17472
17473         * mini-x86.c, mini.h: introduce a new patching method
17474         to support CEE_JMP and tail calls.
17475         * mini.c: obey tail.call. Don't precompile methods target
17476         of CEE_JMP.
17477         * tramp-x86.c: new trampoline code to handle methods
17478         reached through a jump.
17479
17480 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
17481
17482         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
17483         bit values to registers
17484
17485 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
17486
17487         * mini.c (mono_compile_get_interface_var): share interface
17488         variables if possible.
17489
17490 2003-05-16  Martin Baulig  <martin@ximian.com>
17491
17492         * debug-mini.c (mono_init_debugger): New function to initialize
17493         the debugger.  This is not in the debugger since it needs to
17494         access some of mini's internals.
17495
17496 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17497
17498         * mini.c (mono_method_to_ir): inlining fixes/cleanups
17499
17500 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
17501
17502         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
17503         for value type handling.
17504
17505 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17506
17507         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
17508         (mono_method_check_inlining): enable inlining of all kinds of wrappers
17509
17510 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
17511
17512         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
17513           the constructor through a proxy.
17514
17515 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17516
17517         * jit-icalls.c, inssel.brg: fixes to array element address
17518         calculations.
17519
17520 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
17521
17522         * mini-x86.c (is_regsize_var): allocate pointer to registers
17523
17524 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17525
17526         * driver.c: fixed typo, added intrins to the set of optimizations
17527         tested with regressions.
17528
17529 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
17530
17531         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
17532         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
17533         test case.
17534
17535 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
17536
17537         * inssel.brg: remove some common pop instructions without side effects
17538
17539 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17540
17541         * inssel-x86.brg: fixed thinko in int to double conversions.
17542
17543 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
17544
17545         * mini.c, jit-icalls.c: added runtime thread-static variable support.
17546
17547 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17548
17549         * inssel-long32.brg: two more missing instructions.
17550
17551 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
17552
17553         * mini.c (mono_emit_call_args): set the cil_code for all arguments
17554         if not already set.
17555
17556 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
17557
17558         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
17559         correctly.
17560
17561         * basic-float.cs: Added tests for negative zero.
17562
17563 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17564
17565         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
17566         a couple of missing operations for long casts, with test cases.
17567
17568 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17569
17570         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
17571
17572 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
17573
17574         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
17575         code size estimation.
17576
17577 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
17578
17579         * mini.c (mono_jit_create_remoting_trampoline): make it work with
17580         abstract methods (fix bug 42542)
17581
17582         * aot.c: add ability to handle array types
17583         
17584 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
17585
17586         * mini.c: Call the _specific versions of the object allocation
17587         functions if possible.
17588
17589 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17590
17591         * driver.c: call setlocale ().
17592
17593 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17594
17595         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
17596         windows build.
17597
17598 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
17599
17600         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
17601
17602         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
17603         wrappers (fix bug 42122)
17604
17605 2003-05-04  Martin Baulig  <martin@ximian.com>
17606
17607         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
17608
17609         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
17610         s/mini_set_defaults/mono_set_defaults/g.
17611
17612 2003-05-04  Martin Baulig  <martin@ximian.com>
17613
17614         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
17615
17616 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17617
17618         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
17619         (reported by Don Roberts).
17620
17621 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17622
17623         * mini.c: temporarily work around two bugs for this release.
17624
17625 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17626
17627         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
17628         that contains -export-dynamic and it makes using the ld script
17629         useless.
17630         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
17631
17632 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17633
17634         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
17635         specific cpu.
17636
17637 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17638
17639         * mini.c: make sure leave calls all the needed finally blocks,
17640         even when the target jumps out of multiple exception clauses.
17641
17642 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17643
17644         * ldscript, Makefile.am: add linker script to reduce the number of
17645         exported symbols (should also fix the issues with libwine defining
17646         some of the same symbols in io-layer).
17647
17648 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
17649
17650         * driver.c (mini_main): Avoid assertion when no file name is given on 
17651         the command line.
17652
17653 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
17654
17655         * driver.c: added --version/-V command line option.
17656         Added the inline optimization in the regression tests.
17657
17658 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17659
17660         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
17661         to the type in the method signature (fixes bug#42134).
17662
17663 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
17664
17665         * mini.c: when inlining, check this is not null only when needed (bug #42135).
17666
17667 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
17668
17669         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
17670
17671 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17672
17673         * driver.c: fixed bug #42100.
17674
17675 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
17676
17677         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
17678
17679 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17680
17681         * mini.c: moved most of the code required to do inlining to its own
17682         function so it can be reused. Inline also ctors if appropriate.
17683
17684 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
17685
17686         * Makefile.am: Link with -export-dynamic so shared libs loaded by
17687         the runtime can call mono API functions.
17688
17689 2003-04-27  Martin Baulig  <martin@ximian.com>
17690
17691         * debug-mini.c (mono_debug_init_method): Added
17692         `guint32 breakpoint_id' argument; if the method has a breakpoint,
17693         send a notification to the debugger.
17694
17695         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
17696         running in the Mono Debugger, just pass the breakpoint number to
17697         mono_debug_init_method().
17698
17699         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
17700
17701 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
17702
17703         * mini.c: allow some more unsafe compares.
17704
17705 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17706
17707         * mini-x86.c, Makefile.am: make distcheck works (partially from
17708         a patch by Richard Lee <r.h.lee@attbi.com>).
17709         * regset.c, regset.h: removed, they are unused.
17710
17711 2003-04-25  Dick Porter  <dick@ximian.com>
17712
17713         * driver.c: Usage reports the name as 'mono' not 'mini'
17714         * exceptions-x86.c: Build and run on freebsd
17715
17716 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
17717
17718         * Makefile.am: install the program with the 'mono' name and
17719         the library as libmono instead of mini and libmini.
17720
17721 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17722
17723         * driver.c: provide the APIs for the embedding interface of the old jit.
17724
17725 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
17726
17727         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
17728
17729 2003-04-23  Martin Baulig  <martin@ximian.com>
17730
17731         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
17732
17733         * driver.c: Added `--debug' command line argument to enable
17734         debugging support.
17735
17736 2003-04-23  Martin Baulig  <martin@ximian.com>
17737
17738         * debug.[ch]: Removed.  The code is now in
17739         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
17740
17741         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
17742         last six months.
17743
17744 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
17745
17746         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
17747
17748 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17749
17750         * mini.c:
17751         (mini_cleanup): moved mono_runtime_cleanup call after the call to
17752         mono_domain_finalize.
17753         (mini_method_compile): use mono_method_profile* if the the option is
17754         enabled.
17755
17756 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
17757
17758         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17759         methods with their wrapper.
17760
17761         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17762         methods with their wrapper.
17763
17764         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
17765         their wrapper.
17766
17767         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
17768         wrapper.
17769
17770         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
17771         methods.
17772
17773 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
17774
17775         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
17776
17777 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
17778
17779         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
17780         of the mempool. This is slightly faster and uses less memory
17781
17782 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17783
17784         * mini.c: avoid O(n) allocation for variables.
17785
17786 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17787
17788         * mini.c: handle items on the stack after inlining methods.
17789
17790 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17791
17792         * mini.c: make the method->opcode optimization dependent
17793         on MONO_OPT_INSTRINS and do it lazily.
17794
17795 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17796
17797         * driver.c: print overall results at the end of regression run.
17798
17799 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
17800
17801         * inssel.brg: don't overwrite symbolic registers.
17802
17803 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17804
17805         * inssel-x86.brg: fix conversion from long to float.
17806
17807 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
17808
17809         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
17810
17811 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
17812
17813         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
17814
17815         * driver.c: Added --print-vtable option as in the old JIT.
17816
17817 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17818
17819         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
17820
17821 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
17822
17823         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
17824
17825 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
17826
17827         * mini.c regalloc.c regalloc.h: Fix memory leak.
17828
17829 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
17830
17831         * aot.c (mono_aot_get_method): register all used strings
17832
17833 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17834
17835         * mini.c: always intern strings references with ldstr at compile time.
17836
17837 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17838
17839         * Makefile.am: add BUILT_SOURCES.
17840
17841 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17842
17843         * driver.c: give a better error message when the assembly to execute
17844         doesn't have an entry point.
17845
17846 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
17847
17848         * Makefile.am: added hack for automake
17849
17850         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
17851         correct sematics.
17852
17853         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
17854
17855 22003-04-07  Martin Baulig  <martin@ximian.com>
17856
17857         * Makefile.am: Added Makefile.am.
17858
17859         * debugger-main.c: Removed, this is now in the debugger where it
17860         belongs.
17861
17862         * mini.pc.in: Call this package `mini' for the moment.
17863
17864
17865
17866
17867
17868
17869
17870
17871
17872
17873
17874
17875
17876